using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._ReadyToUseTools._NetworkAnalysis
{
    /// <summary>
    /// <para>Solve Vehicle Routing Problem</para>
    /// <para>Solves a vehicle routing problem (VRP) to find the best routes for a fleet of vehicles.</para>
    /// <para>求解车辆配送路线问题 （VRP），为车队找到最佳路线。</para>
    /// </summary>    
    [DisplayName("Solve Vehicle Routing Problem")]
    public class SolveVehicleRoutingProblem : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SolveVehicleRoutingProblem()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_orders">
        /// <para>Orders</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more locations that the routes of the VRP analysis will visit. An order can represent a delivery (for example, furniture delivery), a pickup (such as an airport shuttle bus picking up a passenger), or some type of service or inspection (a tree trimming job or building inspection, for instance).</para>
        ///   <para>When specifying the orders, you can set properties for each—such as its name or service time—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>Name</para>
        ///   <para>The name of the order. The name must be unique. If the name is left null, a name is automatically generated at solve time.</para>
        ///   <para>Description</para>
        ///   <para>The descriptive information about the order. This can contain any textual information for the order and has no restrictions for uniqueness. You may want to store a client's ID number in the Name field and the client's actual name or address in the Description field.</para>
        ///   <para>ServiceTime</para>
        ///   <para>This property specifies the amount of time that will be spent at the network location when the route visits it; that is, it stores the impedance value for the network location. A zero or null value indicates that the network location requires no service time.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>TimeWindowStart1</para>
        ///   <para>The beginning time of the first time window for the network location. This field can contain a null value; a null value indicates no beginning time.</para>
        ///   <para>A time window only states when a vehicle can arrive at an order; it doesn't state when the service time must be completed. To account for service time and departure before the time window ends, subtract ServiceTime from the TimeWindowEnd1 field.</para>
        ///   <para>The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) can contain a time-only value or a date and time value in a date field and cannot be integers representing milliseconds since epoch. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. If a time field such as TimeWindowStart1 has a time-only value (for example, 8:00 a.m.), the date is assumed to be the default date set for the analysis. Using date and time values (for example, 7/11/2010 8:00 a.m.) allows you to set time windows that span multiple days.</para>
        ///   <para>When solving a problem that spans multiple time zones, each order's time-window values refer to the time zone in which the order is located.</para>
        ///   <para>TimeWindowEnd1</para>
        ///   <para>The ending time of the first window for the network location. This field can contain a null value; a null value indicates no ending time.</para>
        ///   <para>TimeWindowStart2</para>
        ///   <para>The beginning time of the second time window for the network location. This field can contain a null value; a null value indicates that there is no second time window.</para>
        ///   <para>If the first time window is null as specified by the TimeWindowStart1 and TimeWindowEnd1 fields, the second time window must also be null.</para>
        ///   <para>If both time windows are non null, they can't overlap. Also, the second time window must occur after the first.</para>
        ///   <para>TimeWindowEnd2</para>
        ///   <para>The ending time of the second time window for the network location. This field can contain a null value.</para>
        ///   <para>When TimeWindowStart2 and TimeWindowEnd2 are both null, there is no second time window.</para>
        ///   <para>When TimeWindowStart2 is not null but TimeWindowEnd2 is null, there is a second time window that has a starting time but no ending time. This is valid.</para>
        ///   <para>MaxViolationTime1</para>
        ///   <para>A time window is considered violated if the arrival time occurs after the time window has ended. This field specifies the maximum allowable violation time for the first time window of the order. It can contain a zero value but can't contain negative values. A zero value indicates that a time window violation at the first time window of the order is unacceptable; that is, the first time window is hard. Conversely, a null value indicates that there is no limit on the allowable violation time. A nonzero value specifies the maximum amount of lateness; for example, a route can arrive at an order up to 30 minutes beyond the end of its first time window.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter</para>
        ///   <para>Time window violations can be tracked and weighted by the solver. Consequently, you can direct the VRP solver to do one of the following:</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Minimize the overall violation time regardless of the increase in travel cost for the fleet.</bullet_item><para/>
        ///       <bullet_item>Find a solution that balances overall violation time and travel cost.</bullet_item><para/>
        ///       <bullet_item>Ignore the overall violation time and minimize the travel cost for the fleet.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>By assigning an importance level for the Time Window Violation Importance parameter, you are essentially choosing one of these options. In any case, however, the solver will return an error if the value set for MaxViolationTime1 is surpassed.</para>
        ///   <para>MaxViolationTime2</para>
        ///   <para>The maximum allowable violation time for the second time window of the order. This field is analogous to the MaxViolationTime1 field.</para>
        ///   <para>InboundArriveTime</para>
        ///   <para>Defines when the item to be delivered to the order will be ready at the starting depot.</para>
        ///   <para>The order can be assigned to a route only if the inbound arrive time precedes the route's latest start time value; this way, the route cannot leave the depot before the item is ready to be loaded onto it.</para>
        ///   <para>This field can help model scenarios involving inbound-wave transshipments. For example, a job at an order requires special materials that are not currently available at the depot. The materials are being shipped from another location and will arrive at the depot at 11:00 a.m. To ensure a route that leaves before the shipment arrives isn't assigned to the order, the order's inbound arrive time is set to 11:00 a.m. The special materials arrive at 11:00 a.m., they are loaded onto the vehicle, and the vehicle departs from the depot to visit its assigned orders.</para>
        ///   <para>Notes:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>The route's start time, which includes service times, must occur after the inbound arrive time. If a route begins before an order's inbound arrive time, the order cannot be assigned to the route. The assignment is invalid even if the route has a start-depot service time that lasts until after the inbound arrive time.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>This time field can contain a time-only value or a date and time value. If a time-only value is set (for example, 11:00 AM), the date is assumed to be the default date set for the analysis. The default date is ignored, however, when any time field in the Depots, Routes, Orders, or Breaks includes a date with the time. In that case, specify all such fields with a date and time (for example, 7/11/2015 11:00 AM).    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>The VRP solver honors InboundArriveTime regardless of the DeliveryQuantities value.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>If an outbound depart time is also specified, its time value must occur after the inbound arrive time.    </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>OutboundDepartTime</para>
        ///   <para>Defines when the item to be picked up at the order must arrive at the ending depot.</para>
        ///   <para>The order can be assigned to a route only if the route can visit the order and reach its end depot before the specified outbound depart time.</para>
        ///   <para>This field can help model scenarios involving outbound-wave transshipments. For instance, a shipping company sends out delivery trucks to pick up packages from orders and bring them into a depot where they are forwarded on to other facilities, en route to their final destination. At 3:00 p.m. every day, a semitrailer stops at the depot to pick up the high-priority packages and take them directly to a central processing station. To avoid delaying the high-priority packages until the next day's 3:00 p.m. trip, the shipping company tries to have delivery trucks pick up the high-priority packages from orders and bring them to the depot before the 3:00 p.m. deadline. This is done by setting the outbound depart time to 3:00 p.m.</para>
        ///   <para>Notes:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>The route's end time, including service times, must occur before the outbound depart time. If a route reaches a depot but doesn't complete its end-depot service time prior to the order's outbound depart time, the order cannot be assigned to the route.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>This time field can contain a time-only value or a date and time value. If a time-only value is set (for example, 11:00 AM), the date is assumed to be the default date set for the analysis. The default date is ignored, however, when any time field in Depots, Routes, Orders, or Breaks includes a date with the time. In that case, specify all such fields with a date and time (for example, 7/11/2015 11:00 AM).    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>The VRP solver honors OutboundDepartTime regardless of the PickupQuantities value.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>If an inbound arrive time is also specified, its time value must occur before the outbound depart time.    </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>DeliveryQuantities</para>
        ///   <para>The size of the delivery. You can specify size in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume.</para>
        ///   <para>Enter delivery quantities without indicating units. For example, if a 300-pound object needs to be delivered to an order, enter 300. You will need to remember that the value is in pounds.</para>
        ///   <para>If you are tracking multiple dimensions, separate the numeric values with a space. For example, if you are recording the weight and volume of a delivery that weighs 2,000 pounds and has a volume of 100 cubic feet, enter 2000 100. Again, you need to remember the units—in this case, pounds and cubic feet. You also need to remember the sequence in which the values and their corresponding units are entered.</para>
        ///   <para>Make sure that Capacities for Routes and DeliveryQuantities and PickupQuantities for Orders are specified in the same manner; that is, the values must be in the same units. If you are using multiple dimensions, the dimensions must be listed in the same sequence for all parameters. For example, if you specify weight in pounds, followed by volume in cubic feet for DeliveryQuantities, the capacity of your routes and the pickup quantities of your orders must be specified the same way: weight in pounds, then volume in cubic feet. If you combine units or change the sequence, you will get unwanted results with no warning messages.</para>
        ///   <para>An empty string or null value is equivalent to all dimensions being zero. If the string has an insufficient number of values in relation to the capacity count or dimensions being tracked, the remaining values are treated as zeros. Delivery quantities can't be negative.</para>
        ///   <para>PickupQuantities</para>
        ///   <para>The size of the pickup. You can specify size in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume. You cannot, however, use negative values. This field is analogous to the DeliveryQuantities field of Orders.</para>
        ///   <para>In the case of an exchange visit, an order can have both delivery and pickup quantities.</para>
        ///   <para>Revenue</para>
        ///   <para>The income generated if the order is included in a solution. This field can contain a null value—a null value indicates zero revenue—but it can't have a negative value.</para>
        ///   <para>Revenue is included in optimizing the objective function value but is not part of the solution's operating cost; that is, the TotalCost field in the routes never includes revenue in its output. However, revenue weights the relative importance of servicing orders.</para>
        ///   <para>Revenue is included in optimizing the objective function value but is not part of the solution's operating cost; that is, the TotalCost field in the route class never includes revenue in its output. However, revenue weights the relative importance of servicing orders.</para>
        ///   <para>SpecialtyNames</para>
        ///   <para>A space-separated string containing the names of the specialties required by the order. A null value indicates that the order doesn't require specialties.</para>
        ///   <para>The spelling of any specialties listed in the Orders and Routes classes must match exactly so that the VRP solver can link them together.</para>
        ///   <para>To illustrate what specialties are and how they work, assume a lawn care and tree trimming company has a portion of its orders that requires a bucket truck to trim tall trees. The company enters BucketTruck in the SpecialtyNames field for these orders to indicate their special need. SpecialtyNames is left null for the other orders. Similarly, the company also enters BucketTruck in the SpecialtyNames field of routes that are driven by trucks with hydraulic booms. It leaves the field null for the other routes. At solve time, the VRP solver assigns orders without special needs to any route, but it only assigns orders that need bucket trucks to routes that have them.</para>
        ///   <para>AssignmentRule</para>
        ///   <para>Specifies the rule for assigning the order to a route. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Exclude)—The order will be excluded from the subsequent solve operation.</bullet_item><para/>
        ///       <bullet_item>1 (Preserve route and relative sequence)—The solver must always assign the order to the preassigned route at the preassigned relative sequence during the solve operation. If this assignment rule can't be followed, it results in an order violation. With this setting, only the relative sequence is maintained, not the absolute sequence. To illustrate what this means, imagine there are two orders: A and B. They have sequence values of 2 and 3, respectively. If you set their AssignmentRule field values to Preserve route and relative sequence, the sequence values for A and B may change after solving because other orders, breaks, and depot visits can be sequenced before, between, or after A and B. However, B cannot be sequenced before A.</bullet_item><para/>
        ///       <bullet_item>2 (Preserve route)—The solver must always assign the order to the preassigned route during the solve operation. A valid sequence must also be set even though the sequence may or may not be preserved. If the order can't be assigned to the specified route, it results in an order violation.</bullet_item><para/>
        ///       <bullet_item>3 (Override)—The solver tries to preserve the route and sequence preassignment for the order during the solve operation. However, a new route or sequence for the order may be assigned if it helps minimize the overall value of the objective function. This is the default value.</bullet_item><para/>
        ///       <bullet_item>4 (Anchor first)—The solver ignores the route and sequence preassignment (if any) for the order during the solve operation. It assigns a route to the order and makes it the first order on that route to minimize the overall value of the objective function.</bullet_item><para/>
        ///       <bullet_item>5 (Anchor last)—The solver ignores the route and sequence preassignment (if any) for the order during the solve operation. It assigns a route to the order and makes it the last order on that route to minimize the overall value of the objective function.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>This field can't contain a null value.</para>
        ///   <para>CurbApproach</para>
        ///   <para>Specifies the direction a vehicle may arrive at and depart from the order. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Either side of vehicle)—The vehicle can approach and depart the order in either direction, so a U-turn is allowed at the incident. This setting can be chosen if it is possible and practical for a vehicle to turn around at the order. This decision may depend on the width of the road and the amount of traffic or whether the order has a parking lot where vehicles can enter and turn around.</bullet_item><para/>
        ///       <bullet_item>1 (Right side of vehicle)—When the vehicle approaches and departs the order, the order must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right-hand side.</bullet_item><para/>
        ///       <bullet_item>2 (Left side of vehicle)—When the vehicle approaches and departs the order, the curb must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left-hand side.</bullet_item><para/>
        ///       <bullet_item>3 (No U-Turn)—When the vehicle approaches the order, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>The CurbApproach attribute is designed to work with both kinds of national driving standards: right-hand traffic (United States) and left-hand traffic (United Kingdom). First, consider an order on the left side of a vehicle. It is always on the left side regardless of whether the vehicle travels on the left or right half of the road. What may change with national driving standards is your decision to approach an order from one of two directions, that is, so it ends up on the right or left side of the vehicle. For example, if you want to arrive at an order and not have a lane of traffic between the vehicle and the order, choose 1 (Right side of vehicle) in the United States and 2 (Left side of vehicle) in the United Kingdom.</para>
        ///   <para>RouteName</para>
        ///   <para>The name of the route to which the order is assigned.</para>
        ///   <para>This field is used to preassign an order to a specific route. It can contain a null value, indicating that the order is not preassigned to any route, and the solver identifies the best possible route assignment for the order. If this is set to null, the Sequence field must also be set to null.</para>
        ///   <para>After a solve operation, if the order is routed, the RouteName field contains the name of the route to which the order is assigned.</para>
        ///   <para>Sequence</para>
        ///   <para>This indicates the sequence of the order on its assigned route.</para>
        ///   <para>This field is used to specify the relative sequence of an order on the route. This field can contain a null value specifying that the order can be placed anywhere along the route. A null value can only occur together with a null RouteName value.</para>
        ///   <para>The input sequence values are positive and unique for each route (shared across renewal depot visits, orders, and breaks) but do not need to start from 1 or be contiguous.</para>
        ///   <para>After a solve operation, the Sequence field contains the sequence value of the order on its assigned route. Output sequence values for a route are shared across depot visits, orders, and breaks; start from 1 (at the starting depot); and are consecutive. The smallest possible output sequence value for a routed order is 2, since a route always begins at a depot.</para>
        ///   <para>Bearing</para>
        ///   <para>The direction in which a point is moving. The units are degrees and are measured clockwise from true north. This field is used in conjunction with the BearingTol field.</para>
        ///   <para>Bearing data is usually sent automatically from a mobile device equipped with a GPS receiver. Try to include bearing data if you are loading an input location that is moving, such as a pedestrian or a vehicle.</para>
        ///   <para>Using this field tends to prevent adding locations to the wrong edges, which can occur when a vehicle is near an intersection or an overpass, for example. Bearing also helps the tool determine on which side of the street the point is.</para>
        ///   <para>BearingTol</para>
        ///   <para>The bearing tolerance value creates a range of acceptable bearing values when locating moving points on an edge using the Bearing field. If the Bearing field value is within the range of acceptable values that are generated from the bearing tolerance on an edge, the point can be added as a network location there; otherwise, the closest point on the next-nearest edge is evaluated.</para>
        ///   <para>The units are in degrees, and the default value is 30. Values must be greater than 0 and less than 180. A value of 30 means that when Network Analyst attempts to add a network location on an edge, a range of acceptable bearing values is generated 15 degrees to either side of the edge (left and right) and in both digitized directions of the edge.</para>
        ///   <para>NavLatency</para>
        ///   <para>This field is only used in the solve process if the Bearing and BearingTol fields also have values; however, entering a NavLatency field value is optional, even when values are present in Bearing and BearingTol. NavLatency indicates how much cost is expected to elapse from the moment GPS information is sent from a moving vehicle to a server and the moment the processed route is received by the vehicle's navigation device.</para>
        ///   <para>The units of NavLatency are the same as the units of the impedance attribute.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定 VRP 分析的路径将访问的一个或多个位置。订单可以表示交付（例如，家具交付）、取件（例如机场穿梭巴士接载乘客）或某种类型的服务或检查（例如，树木修剪工作或建筑物检查）。</para>
        ///   <para>指定订单时，可以使用以下属性为每个订单设置属性，例如其名称或服务时间：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>名字</para>
        ///   <para>订单的名称。名称必须是唯一的。如果名称保留为 null，则在求解时自动生成名称。</para>
        ///   <para>描述</para>
        ///   <para>有关订单的描述性信息。这可以包含订单的任何文本信息，并且对唯一性没有限制。您可能希望将客户端的 ID 号存储在“名称”字段中，将客户端的实际姓名或地址存储在“描述”字段中。</para>
        ///   <para>服务时间</para>
        ///   <para>此属性指定路由访问网络位置时将在网络位置花费的时间量;也就是说，它存储网络位置的阻抗值。零值或空值表示网络位置不需要服务时间。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>时间窗口开始1</para>
        ///   <para>网络位置的第一个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有开始时间。</para>
        ///   <para>时间窗口仅说明车辆何时可以到达订单;它没有说明何时必须完成服务时间。若要考虑服务时间和时间窗口结束前的出发时间，请从 TimeWindowEnd1 字段中减去 ServiceTime。</para>
        ///   <para>时间窗口字段（TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2 和 TimeWindowEnd2）可以包含日期字段中的仅时间值或日期和时间值，并且不能是表示自 epoch 以来的毫秒数的整数。时间窗口字段的时区是使用 time_zone_usage_for_time_fields 参数指定的。如果时间字段（如 TimeWindowStart1）具有仅时间值（例如，上午 8：00），则假定该日期是为分析设置的默认日期。使用日期和时间值（例如，2010 年 7 月 11 日上午 8：00）可以设置跨多天的时间窗口。</para>
        ///   <para>在解决跨越多个时区的问题时，每个订单的时间窗口值都是指订单所在的时区。</para>
        ///   <para>时间窗口结束1</para>
        ///   <para>网络位置的第一个窗口的结束时间。此字段可以包含 null 值;null 值表示没有结束时间。</para>
        ///   <para>时间窗口开始2</para>
        ///   <para>网络位置的第二个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有第二个时间窗口。</para>
        ///   <para>如果 TimeWindowStart1 和 TimeWindowEnd1 字段指定的第一个时间窗口为 null，则第二个时间窗口也必须为 null。</para>
        ///   <para>如果两个时间窗口均为非空，则它们不能重叠。此外，第二个时间窗口必须发生在第一个时间窗口之后。</para>
        ///   <para>时间窗口结束2</para>
        ///   <para>网络位置的第二个时间窗口的结束时间。此字段可以包含 null 值。</para>
        ///   <para>当 TimeWindowStart2 和 TimeWindowEnd2 均为 null 时，没有第二个时间窗口。</para>
        ///   <para>当 TimeWindowStart2 不为 null 但 TimeWindowEnd2 为 null 时，存在第二个时间窗口，该时间窗口具有开始时间但没有结束时间。这是有效的。</para>
        ///   <para>MaxViolationTime1</para>
        ///   <para>如果到达时间发生在时间窗口结束后，则视为违反时间窗口。此字段指定订单首次时间窗口的最大允许违规时间。它可以包含零值，但不能包含负值。零值表示订单第一个时间窗口的时间窗口违规是不可接受的;也就是说，第一个时间窗口很难。相反，null 值表示对允许的违规时间没有限制。非零值指定最大延迟量;例如，路线可以在其第一个时间窗口结束后 30 分钟内到达订单。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定</para>
        ///   <para>求解器可以跟踪时间和加权时间窗口冲突。因此，您可以指示 VRP 求解器执行下列操作之一：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>通过为“时间窗口冲突重要性”参数分配重要性级别，您实际上是在选择这些选项之一。但是，在任何情况下，如果超过 MaxViolationTime1 设置的值，求解器将返回错误。</para>
        ///   <para>MaxViolationTime2</para>
        ///   <para>订单的第二个时间窗口允许的最大违规时间。此字段类似于 MaxViolationTime1 字段。</para>
        ///   <para>入站到达时间</para>
        ///   <para>定义要交付到订单的物料何时在起始仓库准备就绪。</para>
        ///   <para>仅当入站到达时间早于工艺路线的最新开始时间值时，才能将订单分配给工艺路线;这样，在物品准备好装载到仓库之前，路线无法离开仓库。</para>
        ///   <para>此字段可以帮助对涉及入站波转运的场景进行建模。例如，订单作业需要仓库当前不可用的特殊材料。这些材料是从另一个地点运来的，将于上午 11：00 到达仓库。为确保未将货件到达前离开的路线分配给订单，订单的入库到达时间设置为上午 11：00。特殊材料于上午 11：00 到达，它们被装载到车辆上，车辆从仓库出发前往访问其分配的订单。</para>
        /// <para>笔记：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>路线的开始时间（包括服务时间）必须在入站到达时间之后发生。如果工艺路线在订单的入库到达时间之前开始，则无法将订单分配给该工艺路线。即使工艺路线的起点-停运服务时间持续到入站到达时间之后，该分配也是无效的。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>此时间字段可以包含仅时间值或日期和时间值。如果设置了仅时间值（例如，上午 11：00），则假定该日期为为分析设置的默认日期。但是，当“仓库”、“路线”、“订单”或“停工”中的任何时间字段都包含带有时间的日期时，将忽略默认日期。在这种情况下，请使用日期和时间（例如，2015 年 7 月 11 日上午 11：00）指定所有此类字段。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>无论 DeliveryQuantity 值如何，VRP 求解器都遵循 InboundArriveTime。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>如果还指定了出站出发时间，则其时间值必须出现在入站到达时间之后。   </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>出站出发时间</para>
        ///   <para>定义在订单中取件的物品何时必须到达结束仓库。</para>
        ///   <para>只有当路线可以在指定的出站出发时间之前访问订单并到达其终点站时，才能将订单分配给该路线。</para>
        ///   <para>此字段可以帮助对涉及出站波转运的方案进行建模。例如，一家运输公司派出送货卡车从订单中提取包裹，并将它们带到仓库，然后转发到其他设施，然后前往最终目的地。每天下午 3：00，一辆半挂车停在仓库，取走高优先级包裹并将它们直接运送到中央处理站。为避免将高优先级包裹延迟到第二天下午 3：00 的行程，运输公司尝试让送货卡车从订单中提取高优先级包裹，并在下午 3：00 截止日期之前将它们带到仓库。这是通过将出站出发时间设置为下午 3：00 来完成的。</para>
        /// <para>笔记：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>路线的结束时间（包括服务时间）必须早于出站出发时间。如果路线到达仓库，但未在订单的出站出发时间之前完成其终点仓库服务时间，则无法将订单分配给该路线。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>此时间字段可以包含仅时间值或日期和时间值。如果设置了仅时间值（例如，上午 11：00），则假定该日期为为分析设置的默认日期。但是，当“仓库”、“路线”、“订单”或“停工”中的任何时间字段都包含包含时间的日期时，将忽略默认日期。在这种情况下，请使用日期和时间（例如，2015 年 7 月 11 日上午 11：00）指定所有此类字段。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>无论 PickupQuantity 值如何，VRP 求解器都遵循 OutboundDepartTime。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>如果还指定了入站到达时间，则其时间值必须出现在出站出发时间之前。   </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>交货数量</para>
        ///   <para>交货的大小。您可以指定任何维度的尺寸，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。</para>
        ///   <para>输入交货数量而不注明单位。例如，如果需要将 300 磅重的物体交付到订单，请输入 300。您需要记住，该值以磅为单位。</para>
        ///   <para>如果要跟踪多个维度，请用空格分隔数值。例如，如果您要记录重量为 2,000 磅且体积为 100 立方英尺的交货的重量和体积，请输入 2000 100。同样，您需要记住单位 - 在这种情况下，磅和立方英尺。您还需要记住输入值及其相应单位的顺序。</para>
        ///   <para>确保以相同的方式指定“路线和交货数量”和“取货数量”的容量;也就是说，这些值必须采用相同的单位。如果使用多个维度，则所有参数的维度必须按相同的顺序列出。例如，如果为 DeliveryQuantity 指定重量（以磅为单位），然后指定以立方英尺为单位的体积，则必须以相同的方式指定路线的容量和订单的取货数量：重量（以磅为单位），然后以立方英尺为单位的体积。如果组合单位或更改顺序，则不会收到任何警告消息的不需要的结果。</para>
        ///   <para>空字符串或 null 值等效于所有维度均为零。如果字符串中与所跟踪的容量计数或维度相关的值数量不足，则其余值将被视为零。交货数量不能为负数。</para>
        ///   <para>提货数量</para>
        ///   <para>拾音器的大小。您可以指定任何维度的尺寸，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。但是，不能使用负值。此字段类似于 Orders 的 DeliveryQuantity 字段。</para>
        ///   <para>在交换访问的情况下，订单可以同时具有交货数量和取货数量。</para>
        ///   <para>收入</para>
        ///   <para>如果订单包含在解决方案中，则产生的收入。此字段可以包含空值（空值表示收入为零），但不能包含负值。</para>
        ///   <para>收入包含在优化目标函数值中，但不是解决方案运营成本的一部分;也就是说，工艺路线中的 TotalCost 字段从不在其输出中包含收入。但是，收入权衡了服务订单的相对重要性。</para>
        ///   <para>收入包含在优化目标函数值中，但不是解决方案运营成本的一部分;也就是说，route 类中的 TotalCost 字段从不在其输出中包含收入。但是，收入权衡了服务订单的相对重要性。</para>
        ///   <para>专业名称</para>
        ///   <para>一个以空格分隔的字符串，其中包含订单所需的专业名称。null 值表示订单不需要专业。</para>
        ///   <para>“订单”和“路线”类中列出的任何专业的拼写必须完全匹配，以便 VRP 求解器可以将它们链接在一起。</para>
        ///   <para>为了说明什么是专业以及它们是如何工作的，假设一家草坪护理和树木修剪公司有一部分订单需要铲斗卡车来修剪高大的树木。公司在 SpecialtyNames 字段中为这些订单输入 BucketTruck，以指示其特殊需求。对于其他订单，SpecialtyNames 保留为 null。同样，该公司还在 SpecialtyNames 字段中输入了 BucketTruck，这些路线由带有液压臂的卡车驱动。它使其他路由的字段为 null。在求解时，VRP 求解器将没有特殊需求的订单分配给任何路径，但仅将需要铲斗车的订单分配给具有铲斗车的路径。</para>
        ///   <para>AssignmentRule</para>
        ///   <para>指定将订单分配给工艺路线的规则。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>此字段不能包含 null 值。</para>
        ///   <para>遏制方法</para>
        ///   <para>指定车辆到达和离开订单的方向。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>CurbApproach 属性旨在适用于两种国家/地区驾驶标准：右侧交通（美国）和左侧交通（英国）。首先，考虑车辆左侧的订单。无论车辆是在道路的左半部分还是右半部分行驶，它始终在左侧。随着国家驾驶标准的变化，您可能会决定从两个方向之一接近订单，也就是说，它最终会落在车辆的右侧或左侧。例如，如果您想要到达订单，并且车辆和订单之间没有车道，请选择 1（车辆右侧）在美国和 2（车辆左侧）。</para>
        ///   <para>路由名称</para>
        ///   <para>将订单分配到的工艺路线的名称。</para>
        ///   <para>此字段用于将订单预先分配给特定路线。它可以包含一个 null 值，指示顺序未预先分配给任何路径，并且求解器会标识顺序的最佳可能路径分配。如果此值设置为 null，则 Sequence 字段也必须设置为 null。</para>
        ///   <para>求解操作后，如果传送订单，则 RouteName 字段包含将订单分配到的传送路线的名称。</para>
        ///   <para>序列</para>
        ///   <para>这表示订单在其分配的路线上的顺序。</para>
        ///   <para>此字段用于指定路线上订单的相对顺序。此字段可以包含一个空值，该值指定可以将订单放置在工艺路线上的任何位置。null 值只能与 null RouteName 值一起出现。</para>
        ///   <para>对于每条路线，输入序列值是正且唯一的（在续订仓库访问、订单和中断之间共享），但不需要从 1 开始或连续。</para>
        ///   <para>求解操作后，“序列”字段包含订单在其分配路径上的序列值。工艺路线的输出序列值在仓库访问、订单和中断之间共享;从 1 开始（在起始站）;并且是连续的。路由订单的最小可能输出序列值为 2，因为工艺路线始终从仓库开始。</para>
        ///   <para>轴承</para>
        ///   <para>点移动的方向。单位是度数，从正北顺时针测量。此字段与 BearingTol 字段结合使用。</para>
        ///   <para>轴承数据通常从配备 GPS 接收器的移动设备自动发送。如果要加载正在移动的输入位置（例如行人或车辆），请尝试包含方位角数据。</para>
        ///   <para>使用此字段可以防止将位置添加到错误的边缘，例如，当车辆靠近交叉路口或立交桥时，可能会发生这种情况。方位角还有助于工具确定点在街道的哪一侧。</para>
        ///   <para>轴承Tol</para>
        ///   <para>当使用“轴承”（Bearing） 场在边上定位移动点时，轴承公差值会创建可接受的轴承值范围。如果“方位角”（Bearing field） 值在边上的方位公差生成的可接受值范围内，则可以将该点添加为该点的网络位置;否则，将计算下一个最近边上的最近点。</para>
        ///   <para>单位以度为单位，默认值为 30。值必须大于 0 且小于 180。值为 30 表示当 Network Analyst 尝试在边上添加网络位置时，将在边的任一侧（左侧和右侧）以及边的两个数字化方向上生成一系列可接受的方位角值。</para>
        ///   <para>NavLatency（导航延迟）</para>
        ///   <para>仅当 Bearing 和 BearingTol 字段也具有值时，此字段才用于求解过程;但是，输入 NavLatency 字段值是可选的，即使值存在于 Bearing 和 BearingTol 中也是如此。NavLatency 表示从 GPS 信息从移动车辆发送到服务器的那一刻到车辆的导航设备接收到处理路线的那一刻，预计会花费多少成本。</para>
        ///   <para>NavLatency 的单位与阻抗属性的单位相同。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_depots">
        /// <para>Depots</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more depots for the given vehicle routing problem. A depot is a location that a vehicle departs from at the beginning of its workday and returns to at the end of the workday. Vehicles are loaded (for deliveries) or unloaded (for pickups) at depots. In some cases, a depot can also act as a renewal location whereby the vehicle can unload or reload and continue performing deliveries and pickups. A depot has open and close times, as specified by a hard time window. Vehicles can't arrive at a depot outside of this time window.</para>
        ///   <para>When specifying the depots, you can set properties for each—such as its name or service time—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>Name</para>
        ///   <para>The name of the depot. The StartDepotName and EndDepotName fields on routes reference the names you specify here. It is also referenced by the route renewals, when used.</para>
        ///   <para>Depot names are not case sensitive but must be nonempty and unique.</para>
        ///   <para>Description</para>
        ///   <para>The descriptive information about the depot location. This can contain any textual information and has no restrictions for uniqueness.</para>
        ///   <para>For example, if you want to note which region a depot is in or the depot's address and telephone number, you can enter the information here rather than in the Name field.</para>
        ///   <para>TimeWindowStart1</para>
        ///   <para>The beginning time of the first time window for the network location. This field can contain a null value; a null value indicates no beginning time.</para>
        ///   <para>The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) can contain a time-only value or a date and time value in a date field and cannot be integers representing milliseconds since epoch. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. If a time field such as TimeWindowStart1 has a time-only value (for example, 8:00 a.m.), the date is assumed to be the default date set for the analysis. Using date and time values (for example, 7/11/2010 8:00 a.m.) allows you to set time windows that span multiple days.</para>
        ///   <para>When solving a problem that spans multiple time zones, each depot's time-window values refer to the time zone in which the depot is located.</para>
        ///   <para>TimeWindowEnd1</para>
        ///   <para>The ending time of the first window for the network location. This field can contain a null value; a null value indicates no ending time.</para>
        ///   <para>TimeWindowStart2</para>
        ///   <para>The beginning time of the second time window for the network location. This field can contain a null value; a null value indicates that there is no second time window.</para>
        ///   <para>If the first time window is null, as specified by the TimeWindowStart1 and TimeWindowEnd1 fields, the second time window must also be null.</para>
        ///   <para>If both time windows are not null, they can't overlap. Also, the second time window must occur after the first.</para>
        ///   <para>TimeWindowEnd2</para>
        ///   <para>The ending time of the second time window for the network location. This field can contain a null value.</para>
        ///   <para>When TimeWindowStart2 and TimeWindowEnd2 are both null, there is no second time window.</para>
        ///   <para>When TimeWindowStart2 is not null but TimeWindowEnd2 is null, there is a second time window that has a starting time but no ending time. This is valid.</para>
        ///   <para>CurbApproach</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Either side of vehicle)—The vehicle can approach and depart the depot in either direction, so a U-turn is allowed at the incident. This setting can be chosen if it is possible and practical for a vehicle to turn around at the depot. This decision may depend on the width of the road and the amount of traffic or whether the depot has a parking lot where vehicles can enter and turn around.</bullet_item><para/>
        ///       <bullet_item>1 (Right side of vehicle)—When the vehicle approaches and departs the depot, the depot must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right-hand side.</bullet_item><para/>
        ///       <bullet_item>2 (Left side of vehicle)—When the vehicle approaches and departs the depot, the curb must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left-hand side.</bullet_item><para/>
        ///       <bullet_item>3 (No U-Turn)—When the vehicle approaches the depot, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>The CurbApproach attribute is designed to work with both kinds of national driving standards: right-hand traffic (United States) and left-hand traffic (United Kingdom). First, consider a depot on the left side of a vehicle. It is always on the left side regardless of whether the vehicle travels on the left or right half of the road. What may change with national driving standards is your decision to approach a depot from one of two directions, that is, so it ends up on the right or left side of the vehicle. For example, if you want to arrive at a depot and not have a lane of traffic between the vehicle and the depot, choose 1 (Right side of vehicle) in the United States and 2 (Left side of vehicle) in the United Kingdom.</para>
        ///   <para>Bearing</para>
        ///   <para>The direction in which a point is moving. The units are degrees and are measured clockwise from true north. This field is used in conjunction with the BearingTol field.</para>
        ///   <para>Bearing data is usually sent automatically from a mobile device equipped with a GPS receiver. Try to include bearing data if you are loading an input location that is moving, such as a pedestrian or a vehicle.</para>
        ///   <para>Using this field tends to prevent adding locations to the wrong edges, which can occur when a vehicle is near an intersection or an overpass, for example. Bearing also helps the tool determine on which side of the street the point is.</para>
        ///   <para>BearingTol</para>
        ///   <para>The bearing tolerance value creates a range of acceptable bearing values when locating moving points on an edge using the Bearing field. If the Bearing field value is within the range of acceptable values that are generated from the bearing tolerance on an edge, the point can be added as a network location there; otherwise, the closest point on the next-nearest edge is evaluated.</para>
        ///   <para>The units are in degrees, and the default value is 30. Values must be greater than 0 and less than 180. A value of 30 means that when Network Analyst attempts to add a network location on an edge, a range of acceptable bearing values is generated 15 degrees to either side of the edge (left and right) and in both digitized directions of the edge.</para>
        ///   <para>NavLatency</para>
        ///   <para>This field is only used in the solve process if the Bearing and BearingTol fields also have values; however, entering a NavLatency field value is optional, even when values are present in Bearing and BearingTol. NavLatency indicates how much cost is expected to elapse from the moment GPS information is sent from a moving vehicle to a server and the moment the processed route is received by the vehicle's navigation device.</para>
        ///   <para>The units of NavLatency are the same as the units of the impedance attribute.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>为给定的车辆配送路线问题指定一个或多个仓库。仓库是车辆在工作日开始时出发并在工作日结束时返回的位置。车辆在仓库装货（用于送货）或卸货（用于取货）。在某些情况下，仓库还可以充当更新地点，车辆可以卸载或重新装载并继续执行交付和取货。仓库有开放和关闭时间，由硬时间窗口指定。车辆无法在此时间窗口之外到达仓库。</para>
        ///   <para>指定仓库时，可以使用以下属性为每个仓库设置属性，例如其名称或服务时间：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>名字</para>
        ///   <para>仓库的名称。路由上的 StartDepotName 和 EndDepotName 字段引用您在此处指定的名称。使用时，路由续订也会引用它。</para>
        ///   <para>仓库名称不区分大小写，但必须为非空且唯一。</para>
        ///   <para>描述</para>
        ///   <para>有关仓库位置的描述性信息。这可以包含任何文本信息，并且对唯一性没有限制。</para>
        ///   <para>例如，如果要记下仓库所在的区域或仓库的地址和电话号码，则可以在此处输入信息，而不是在“名称”字段中输入信息。</para>
        ///   <para>时间窗口开始1</para>
        ///   <para>网络位置的第一个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有开始时间。</para>
        ///   <para>时间窗口字段（TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2 和 TimeWindowEnd2）可以包含日期字段中的仅时间值或日期和时间值，并且不能是表示自 epoch 以来的毫秒数的整数。时间窗口字段的时区是使用 time_zone_usage_for_time_fields 参数指定的。如果时间字段（如 TimeWindowStart1）具有仅时间值（例如，上午 8：00），则假定该日期是为分析设置的默认日期。使用日期和时间值（例如，2010 年 7 月 11 日上午 8：00）可以设置跨多天的时间窗口。</para>
        ///   <para>在求解跨越多个时区的问题时，每个仓库的时间窗口值是指仓库所在的时区。</para>
        ///   <para>时间窗口结束1</para>
        ///   <para>网络位置的第一个窗口的结束时间。此字段可以包含 null 值;null 值表示没有结束时间。</para>
        ///   <para>时间窗口开始2</para>
        ///   <para>网络位置的第二个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有第二个时间窗口。</para>
        ///   <para>如果第一个时间窗口为 null，则如 TimeWindowStart1 和 TimeWindowEnd1 字段指定的那样，第二个时间窗口也必须为 null。</para>
        ///   <para>如果两个时间窗口都不为空，则它们不能重叠。此外，第二个时间窗口必须发生在第一个时间窗口之后。</para>
        ///   <para>时间窗口结束2</para>
        ///   <para>网络位置的第二个时间窗口的结束时间。此字段可以包含 null 值。</para>
        ///   <para>当 TimeWindowStart2 和 TimeWindowEnd2 均为 null 时，没有第二个时间窗口。</para>
        ///   <para>当 TimeWindowStart2 不为 null 但 TimeWindowEnd2 为 null 时，存在第二个时间窗口，该时间窗口具有开始时间但没有结束时间。这是有效的。</para>
        ///   <para>遏制方法</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>CurbApproach 属性旨在适用于两种国家/地区驾驶标准：右侧交通（美国）和左侧交通（英国）。首先，考虑车辆左侧的仓库。无论车辆是在道路的左半部分还是右半部分行驶，它始终在左侧。随着国家驾驶标准的变化，您可能会决定从两个方向之一接近停车场，也就是说，它最终会位于车辆的右侧或左侧。例如，如果您要到达停车场，并且车辆和停车场之间没有车道，请在美国选择 1（车辆右侧）和英国 2（车辆左侧）。</para>
        ///   <para>轴承</para>
        ///   <para>点移动的方向。单位是度数，从正北顺时针测量。此字段与 BearingTol 字段结合使用。</para>
        ///   <para>轴承数据通常从配备 GPS 接收器的移动设备自动发送。如果要加载正在移动的输入位置（例如行人或车辆），请尝试包含方位角数据。</para>
        ///   <para>使用此字段可以防止将位置添加到错误的边缘，例如，当车辆靠近交叉路口或立交桥时，可能会发生这种情况。方位角还有助于工具确定点在街道的哪一侧。</para>
        ///   <para>轴承Tol</para>
        ///   <para>当使用“轴承”（Bearing） 场在边上定位移动点时，轴承公差值会创建可接受的轴承值范围。如果“方位角”（Bearing field） 值在边上的方位公差生成的可接受值范围内，则可以将该点添加为该点的网络位置;否则，将计算下一个最近边上的最近点。</para>
        ///   <para>单位以度为单位，默认值为 30。值必须大于 0 且小于 180。值为 30 表示当 Network Analyst 尝试在边上添加网络位置时，将在边的任一侧（左侧和右侧）以及边的两个数字化方向上生成一系列可接受的方位角值。</para>
        ///   <para>NavLatency（导航延迟）</para>
        ///   <para>仅当 Bearing 和 BearingTol 字段也具有值时，此字段才用于求解过程;但是，输入 NavLatency 字段值是可选的，即使值存在于 Bearing 和 BearingTol 中也是如此。NavLatency 表示从 GPS 信息从移动车辆发送到服务器的那一刻到车辆的导航设备接收到处理路线的那一刻，预计会花费多少成本。</para>
        ///   <para>NavLatency 的单位与阻抗属性的单位相同。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_routes">
        /// <para>Routes</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more routes that describe vehicle and driver characteristics. A route can have start and end depot service times, a fixed or flexible starting time, time-based operating costs, distance-based operating costs, multiple capacities, various constraints on a driver's workday, and so on.</para>
        ///   <para>The routes can be specified with the following attributes:</para>
        ///   <para>Name</para>
        ///   <para>The name of the route. The name must be unique.</para>
        ///   <para>The tool generates a unique name at solve time if the field value is null; therefore, entering a value is optional in most cases. However, you must enter a name if your analysis includes breaks, route renewals, route zones, or orders that are preassigned to a route because the route name is used as a foreign key in these cases. Route names not are case sensitive.</para>
        ///   <para>StartDepotName</para>
        ///   <para>The name of the starting depot for the route. This field is a foreign key to the Name field in Depots.</para>
        ///   <para>If the StartDepotName value is null, the route will begin from the first order assigned. Omitting the start depot is useful when the vehicle's starting location is unknown or irrelevant to your problem. However, when StartDepotName is null, EndDepotName cannot also be null.</para>
        ///   <para>Virtual start depots are not allowed if orders or depots are in multiple time zones.</para>
        ///   <para>If the route is making deliveries and StartDepotName is null, it is assumed the cargo is loaded on the vehicle at a virtual depot before the route begins. For a route that has no renewal visits, its delivery orders (those with nonzero DeliveryQuantities values in Orders) are loaded at the start depot or virtual depot. For a route that has renewal visits, only the delivery orders before the first renewal visit are loaded at the start depot or virtual depot.</para>
        ///   <para>EndDepotName</para>
        ///   <para>The name of the ending depot for the route. This field is a foreign key to the Name field in Depots.</para>
        ///   <para>StartDepotServiceTime</para>
        ///   <para>The service time at the starting depot. This can be used to model the time spent loading the vehicle. This field can contain a null value; a null value indicates zero service time.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter.</para>
        ///   <para>The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. The depot service times can be assigned values corresponding to a full truckload or an average truckload, or you can make your own time estimate.</para>
        ///   <para>EndDepotServiceTime</para>
        ///   <para>The service time at the ending depot. This can be used to model the time spent unloading the vehicle. This field can contain a null value; a null value indicates zero service time.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter.</para>
        ///   <para>The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. The depot service times can be assigned values corresponding to a full truckload or an average truckload, or you can make your own time estimate.</para>
        ///   <para>EarliestStartTime</para>
        ///   <para>The earliest allowable starting time for the route. This is used by the solver in conjunction with the time window of the starting depot for determining feasible route start times.</para>
        ///   <para>This field can't contain null values and has a default time-only value of 8:00 AM. The default value is interpreted as 8:00 a.m. on the default date set for the analysis.</para>
        ///   <para>When solving a problem that spans multiple time zones, the time zone for EarliestStartTime is the same as the time zone in which the starting depot is located.</para>
        ///   <para>LatestStartTime</para>
        ///   <para>The latest allowable starting time for the route.</para>
        ///   <para>This field can't contain null values and has a default time-only value of 10:00 AM. The default value is interpreted as 10:00 a.m. on the default date set for the analysis.</para>
        ///   <para>When solving a problem that spans multiple time zones, the time zone for LatestStartTime is the same as the time zone in which the starting depot is located.</para>
        ///   <para>ArriveDepartDelay</para>
        ///   <para>This field stores the amount of travel time needed to accelerate the vehicle to normal travel speeds, decelerate it to a stop, and move it off and on the network (for example, in and out of parking). By including an ArriveDepartDelay value, the VRP solver is deterred from sending many routes to service physically coincident orders.</para>
        ///   <para>The cost for this property is incurred between visits to noncoincident orders, depots, and route renewals. For example, when a route starts from a depot and visits the first order, the total arrive/depart delay is added to the travel time. The same is true when traveling from the first order to the second order. If the second and third orders are coincident, the ArriveDepartDelay value is not added between them since the vehicle doesn't need to move. If the route travels to a route renewal, the value is added to the travel time again.</para>
        ///   <para>Although a vehicle must slow down and stop for a break and accelerate afterward, the VRP solver cannot add the ArriveDepartDelay value for breaks. This means that if a route leaves an order, stops for a break, and continues to the next order, the arrive/depart delay is added only once, not twice.</para>
        ///   <para>For example, assume there are five coincident orders in a high-rise building, and they are serviced by three different routes. This means three arrive/depart delays are incurred; that is, three drivers need to separately find parking places and enter the same building. However, if the orders can be serviced by one route instead, only one driver needs to park and enter the building, and only one arrive/depart delay is incurred. Since the VRP solver tries to minimize cost, it attempts to limit the arrive/depart delays and thus identify the single-route option. (Note that multiple routes may need to be sent when other constraints—such as specialties, time windows, or capacities—require it.)</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>Capacities</para>
        ///   <para>The maximum capacity of the vehicle. You can specify capacity in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume.</para>
        ///   <para>Enter capacities without indicating units. For example, if your vehicle can carry a maximum of 40,000 pounds, enter 40000. You need to remember that the value is in pounds.</para>
        ///   <para>If you are tracking multiple dimensions, separate the numeric values with a space. For example, if you are recording the weight and volume of a delivery that weighs 2,000 pounds and has a volume of 100 cubic feet, enter 2000 100. Again, you need to remember the units—in this case, pounds and cubic feet. You also need to remember the sequence in which the values and their corresponding units are entered.</para>
        ///   <para>Remembering the units and the unit sequence is important for a couple of reasons: first, so you can reinterpret the information later; second, so you can properly enter values for the DeliveryQuantities and PickupQuantities fields for the orders. Note that the VRP solver simultaneously refers to Capacities, DeliveryQuantities, and PickupQuantities to verify that a route doesn't become overloaded. Units can't be entered in the field and the VRP tool can't make unit conversions. You must enter the values for the three fields using the same units and the same unit sequence to ensure that the values are correctly interpreted. If you combine units or change the sequence in any of the three fields, unwanted results occur with no warning messages. It is recommended that you set up a unit and unit-sequence standard beforehand and continually refer to it when you enter values for these three fields.</para>
        ///   <para>An empty string or null value is equivalent to all values being zero. Capacity values can't be negative.</para>
        ///   <para>If the Capacities field has an insufficient number of values in relation to the DeliveryQuantities or PickupQuantities field for orders, the remaining values are treated as zero.</para>
        ///   <para>The VRP solver only performs a simple Boolean test to determine whether capacities are exceeded. If a route's capacity value is greater than or equal to the total quantity being carried, the VRP solver will assume the cargo fits in the vehicle. This could be incorrect, depending on the actual shape of the cargo and the vehicle. For example, the VRP solver allows you to fit a 1,000-cubic-foot sphere into a 1,000-cubic-foot truck that is 8 feet wide. In reality, however, since the sphere is 12.6 feet in diameter, it won't fit in the 8-foot wide truck.</para>
        ///   <para>FixedCost</para>
        ///   <para>A fixed monetary cost that is incurred only if the route is used in a solution (that is, it has orders assigned to it). This field can contain null values; a null value indicates zero fixed cost. This cost is part of the total route operating cost.</para>
        ///   <para>CostPerUnitTime</para>
        ///   <para>The monetary cost incurred—per unit of work time—for the total route duration, including travel times as well as service times and wait times at orders, depots, and breaks. This field can't contain a null value and has a default value of 1.0.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>CostPerUnitDistance</para>
        ///   <para>The monetary cost incurred—per unit of distance traveled—for the route length (total travel distance). This field can contain null values; a null value indicates zero cost.</para>
        ///   <para>The unit for this field value is specified by the distance_units parameter.</para>
        ///   <para>OvertimeStartTime</para>
        ///   <para>The duration of regular work time before overtime computation begins. This field can contain null values; a null value indicates that overtime does not apply.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>For example, if the driver is to be paid overtime when the total route duration extends beyond eight hours, OvertimeStartTime is specified as 480 (8 hours * 60 minutes/hour), given the time units are minutes.</para>
        ///   <para>CostPerUnitOvertime</para>
        ///   <para>The monetary cost incurred per time unit of overtime work. This field can contain null values; a null value indicates that the CostPerUnitOvertime value is the same as the CostPerUnitTime value.</para>
        ///   <para>MaxOrderCount</para>
        ///   <para>The maximum allowable number of orders on the route. This field can't contain null values and has a default value of 30.</para>
        ///   <para>MaxTotalTime</para>
        ///   <para>The maximum allowable route duration. The route duration includes travel times as well as service and wait times at orders, depots, and breaks. This field can contain null values; a null value indicates that there is no constraint on the route duration.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxTotalTravelTime</para>
        ///   <para>The maximum allowable travel time for the route. The travel time includes only the time spent driving on the network and does not include service or wait times.</para>
        ///   <para>This field can contain null values; a null value indicates that there is no constraint on the maximum allowable travel time. This field value can't be larger than the MaxTotalTime field value.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxTotalDistance</para>
        ///   <para>The maximum allowable travel distance for the route.</para>
        ///   <para>The unit for this field value is specified by the distance_units parameter.</para>
        ///   <para>This field can contain null values; a null value indicates that there is no constraint on the maximum allowable travel distance.</para>
        ///   <para>SpecialtyNames</para>
        ///   <para>A space-separated string containing the names of the specialties required by the order. A null value indicates that the order doesn't require specialties.</para>
        ///   <para>The spelling of any specialties listed in the Orders and Routes classes must match exactly so that the VRP solver can link them together.</para>
        ///   <para>To illustrate what specialties are and how they work, assume a lawn care and tree trimming company has a portion of its orders that requires a bucket truck to trim tall trees. The company enters BucketTruck in the SpecialtyNames field for these orders to indicate their special need. SpecialtyNames is left null for the other orders. Similarly, the company also enters BucketTruck in the SpecialtyNames field of routes that are driven by trucks with hydraulic booms. It leaves the field null for the other routes. At solve time, the VRP solver assigns orders without special needs to any route, but it only assigns orders that need bucket trucks to routes that have them.</para>
        ///   <para>AssignmentRule</para>
        ///   <para>Specifies the rule for assigning the order to a route. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>This field can't contain a null value.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>1 (Include)—The route is included in the solve operation. This is the default value.</bullet_item><para/>
        ///       <bullet_item>2 (Exclude)—The route is excluded from the solve operation.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定描述车辆和驾驶员特征的一条或多条路线。路线可以有起点和终点站服务时间、固定或灵活的开始时间、基于时间的运营成本、基于距离的运营成本、多种容量、对驾驶员工作日的各种限制等。</para>
        ///   <para>可以使用以下属性指定路由：</para>
        ///   <para>名字</para>
        ///   <para>路由的名称。名称必须是唯一的。</para>
        ///   <para>如果字段值为 null，则该工具将在求解时生成唯一名称;因此，在大多数情况下，输入值是可选的。但是，如果您的分析包括中断、工艺路线续订、工艺路线区域或预先分配给工艺路线的订单，则必须输入名称，因为在这些情况下，工艺路线名称将用作外键。路由名称不区分大小写。</para>
        ///   <para>StartDepot名称</para>
        ///   <para>工艺路线的起始仓库的名称。此字段是 Depot 中 Name 字段的外键。</para>
        ///   <para>如果 StartDepotName 值为 null，则路由将从分配的第一个订单开始。当车辆的起始位置未知或与您的问题无关时，省略起始站很有用。但是，当 StartDepotName 为 null 时，EndDepotName 也不能为 null。</para>
        ///   <para>如果订单或仓库位于多个时区，则不允许使用虚拟起始仓库。</para>
        ///   <para>如果工艺路线正在交货且 StartDepotName 为 null，则假定货物在工艺路线开始之前已在虚拟仓库装载到车辆上。对于没有续订访问的工艺路线，其交货订单（订单中 DeliveryQuantity 值不为零的交货订单）将在起始仓库或虚拟仓库加载。对于具有续订访问的工艺路线，仅在第一次续订访问之前的交货订单加载到起始仓库或虚拟仓库。</para>
        ///   <para>EndDepot名称</para>
        ///   <para>路线的终点仓库的名称。此字段是 Depot 中 Name 字段的外键。</para>
        ///   <para>StartDepotServiceTime（启动仓库服务时间）</para>
        ///   <para>起始仓库的服务时间。这可用于对装载车辆所花费的时间进行建模。此字段可以包含 null 值;空值表示零服务时间。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定。</para>
        ///   <para>起点和终点站的服务时间是固定值（由 StartDepotServiceTime 和 EndDepotServiceTime 字段值给出），不考虑路线的实际负载。例如，在起始仓库装载车辆所需的时间可能取决于订单的大小。可以为堆场服务时间分配与整车或平均整车相对应的值，也可以进行自己的时间估算。</para>
        ///   <para>EndDepotServiceTime（结束仓库服务时间）</para>
        ///   <para>终点站的服务时间。这可用于对卸载车辆所花费的时间进行建模。此字段可以包含 null 值;空值表示零服务时间。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定。</para>
        ///   <para>起点和终点站的服务时间是固定值（由 StartDepotServiceTime 和 EndDepotServiceTime 字段值给出），不考虑路线的实际负载。例如，在起始仓库装载车辆所需的时间可能取决于订单的大小。可以为堆场服务时间分配与整车或平均整车相对应的值，也可以进行自己的时间估算。</para>
        ///   <para>最早的开始时间</para>
        ///   <para>路线的最早允许开始时间。求解器将其与起始车辆段的时间窗口结合使用，以确定可行的路径起始时间。</para>
        ///   <para>此字段不能包含 null 值，并且默认的仅限时间值为 8：00 AM。默认值被解释为为分析设置的默认日期的上午 8：00。</para>
        ///   <para>在解决跨多个时区的问题时，EarliestStartTime 的时区与起始仓库所在的时区相同。</para>
        ///   <para>最新开始时间</para>
        ///   <para>路线的最晚允许开始时间。</para>
        ///   <para>此字段不能包含 null 值，并且默认的仅限时间值为 10：00 AM。默认值被解释为为分析设置的默认日期的上午 10：00。</para>
        ///   <para>在解决跨多个时区的问题时，LatestStartTime 的时区与起始仓库所在的时区相同。</para>
        ///   <para>到达出发延迟</para>
        ///   <para>此字段存储将车辆加速到正常行驶速度、将其减速到停止以及将其移出网络（例如，进出停车场）所需的行驶时间。通过包含 ArriveDepartDelay 值，VRP 求解器可以阻止发送许多路由来为物理上重合的订单提供服务。</para>
        ///   <para>此属性的费用是在访问非重合订单、仓库和路线续订之间产生的。例如，当路线从仓库出发并访问第一个订单时，总到达/离开延迟将添加到旅行时间中。从一阶到二阶时也是如此。如果第二个和第三个订单重合，则不会在它们之间添加 ArriveDepartDelay 值，因为车辆不需要移动。如果路线行驶到路线续订，则该值将再次添加到旅行时间中。</para>
        ///   <para>尽管车辆必须减速并停下来休息，然后加速，但 VRP 求解器无法为休息添加 ArriveDepartDelay 值。这意味着，如果路线离开订单，停下来休息，然后继续执行下一个订单，则到达/离开延迟仅添加一次，而不是两次。</para>
        ///   <para>例如，假设在一栋高层建筑中有五个重合的订单，并且它们由三条不同的路线提供服务。这意味着会产生三次到达/离开延误;也就是说，三个司机需要分别找到停车位并进入同一栋大楼。但是，如果订单可以通过一条路线提供服务，则只需要一名司机停车并进入建筑物，并且只会产生一次到达/离开延迟。由于 VRP 求解器试图最小化成本，因此它会尝试限制到达/离开延迟，从而识别单路径选项。（请注意，当其他约束（如专业、时间窗口或容量）需要时，可能需要发送多个路由。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>能力</para>
        ///   <para>车辆的最大容量。您可以指定任何维度的容量，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。</para>
        ///   <para>输入容量而不指示单位。例如，如果您的车辆最多可以承载 40,000 磅，请输入 40000。您需要记住，该值以磅为单位。</para>
        ///   <para>如果要跟踪多个维度，请用空格分隔数值。例如，如果您要记录重量为 2,000 磅且体积为 100 立方英尺的交货的重量和体积，请输入 2000 100。同样，您需要记住单位 - 在这种情况下，磅和立方英尺。您还需要记住输入值及其相应单位的顺序。</para>
        ///   <para>记住单位和单位顺序很重要，原因有几个：首先，这样你以后就可以重新解释信息;其次，您可以正确输入订单的 DeliveryQuantity 和 PickupQuantity 字段的值。请注意，VRP 求解器同时引用 Capacities、DeliveryQuantity 和 PickupQuantities，以验证工艺路线是否未过载。无法在字段中输入单位，VRP 工具也无法进行单位转换。您必须使用相同的单位和相同的单位序列输入三个字段的值，以确保正确解释这些值。如果组合单位或更改三个字段中的任何一个字段中的顺序，则会出现不需要的结果，并且不会出现警告消息。建议您事先设置单位和单位序列标准，并在输入这三个字段的值时不断引用它。</para>
        ///   <para>空字符串或 null 值等效于所有值均为零。容量值不能为负数。</para>
        ///   <para>如果“产能”字段相对于订单的“DeliveryQuantities”或“PickupQuantities”字段的值数量不足，则其余值将被视为零。</para>
        ///   <para>VRP 求解器仅执行简单的布尔检验，以确定是否超出容量。如果路线的载客量值大于或等于所运载的总量，则 VRP 求解器将假定货物适合车辆。这可能是不正确的，具体取决于货物和车辆的实际形状。例如，VRP 求解器允许您将 1,000 立方英尺的球体装入 8 英尺宽的 1,000 立方英尺卡车中。然而，实际上，由于球体的直径为 12.6 英尺，因此它不适合 8 英尺宽的卡车。</para>
        ///   <para>固定成本</para>
        ///   <para>一种固定的货币成本，仅当在解决方案中使用工艺路线（即，它已分配订单）时才会产生。此字段可以包含 null 值;空值表示零固定成本。此成本是总路线运营成本的一部分。</para>
        ///   <para>CostPerUnitTime</para>
        ///   <para>总路线持续时间（包括旅行时间以及订单、仓库和休息时间的服务时间和等待时间）产生的每单位工作时间产生的货币成本。此字段不能包含 null 值，默认值为 1.0。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>成本每单位距离</para>
        ///   <para>路线长度（总行驶距离）产生的货币成本（每单位行驶距离）。此字段可以包含 null 值;空值表示零成本。</para>
        ///   <para>此字段值的单位由 distance_units 参数指定。</para>
        ///   <para>加班开始时间</para>
        ///   <para>加班计算开始前的正常工作时间的持续时间。此字段可以包含 null 值;null 值表示不适用加班。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>例如，如果在总路线持续时间超过 8 小时时要向驾驶员支付加班费，则 OvertimeStartTime 指定为 480（8 小时 * 60 分钟/小时），前提是时间单位为分钟。</para>
        ///   <para>CostPerUnit加班</para>
        ///   <para>按时间单位加班产生的货币成本。此字段可以包含 null 值;null 值指示 CostPerUnitOvertime 值与 CostPerUnitTime 值相同。</para>
        ///   <para>MaxOrderCount</para>
        ///   <para>工艺路线上允许的最大订单数。此字段不能包含 null 值，默认值为 30。</para>
        ///   <para>MaxTotalTime（最大总时间）</para>
        ///   <para>允许的最大路由持续时间。路线持续时间包括旅行时间以及订单、仓库和休息时间的服务和等待时间。此字段可以包含 null 值;空值表示对路由持续时间没有约束。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>最大总行程时间</para>
        ///   <para>路线的最大允许行驶时间。旅行时间仅包括在网络上行驶的时间，不包括服务或等待时间。</para>
        ///   <para>此字段可以包含 null 值;空值表示对最大允许行驶时间没有限制。此字段值不能大于 MaxTotalTime 字段值。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>最大总距离</para>
        ///   <para>路线的最大允许行驶距离。</para>
        ///   <para>此字段值的单位由 distance_units 参数指定。</para>
        ///   <para>此字段可以包含 null 值;空值表示对最大允许行驶距离没有约束。</para>
        ///   <para>专业名称</para>
        ///   <para>一个以空格分隔的字符串，其中包含订单所需的专业名称。null 值表示订单不需要专业。</para>
        ///   <para>“订单”和“路线”类中列出的任何专业的拼写必须完全匹配，以便 VRP 求解器可以将它们链接在一起。</para>
        ///   <para>为了说明什么是专业以及它们是如何工作的，假设一家草坪护理和树木修剪公司有一部分订单需要铲斗卡车来修剪高大的树木。公司在 SpecialtyNames 字段中为这些订单输入 BucketTruck，以指示其特殊需求。对于其他订单，SpecialtyNames 保留为 null。同样，该公司还在 SpecialtyNames 字段中输入了 BucketTruck，这些路线由带有液压臂的卡车驱动。它使其他路由的字段为 null。在求解时，VRP 求解器将没有特殊需求的订单分配给任何路径，但仅将需要铲斗车的订单分配给具有铲斗车的路径。</para>
        ///   <para>AssignmentRule</para>
        ///   <para>指定将订单分配给工艺路线的规则。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>此字段不能包含 null 值。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public SolveVehicleRoutingProblem(object _orders, object _depots, object _routes)
        {
            this._orders = _orders;
            this._depots = _depots;
            this._routes = _routes;
        }
        public override string ToolboxName => "Ready To Use Tools";

        public override string ToolName => "Solve Vehicle Routing Problem";

        public override string CallName => "agolservices.SolveVehicleRoutingProblem";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_orders, _depots, _routes, _breaks, _time_units.GetGPValue(), _distance_units.GetGPValue(), _analysis_region.GetGPValue(), _default_date, _uturn_policy.GetGPValue(), _time_window_factor.GetGPValue(), _spatially_cluster_routes, _route_zones, _route_renewals, _order_pairs, _excess_transit_factor.GetGPValue(), _point_barriers, _line_barriers, _polygon_barriers, _use_hierarchy_in_analysis, _restrictions, _attribute_parameter_values, _populate_route_lines, _route_line_simplification_tolerance, _populate_directions, _directions_language, _directions_style_name.GetGPValue(), _travel_mode, _impedance.GetGPValue(), _time_zone_usage_for_time_fields.GetGPValue(), _save_output_layer, _overrides, _save_route_data, _time_impedance.GetGPValue(), _distance_impedance.GetGPValue(), _populate_stop_shapes, _output_format.GetGPValue(), _ignore_invalid_order_locations, _out_unassigned_stops, _out_stops, _out_routes, _out_directions, _solve_succeeded, _out_network_analysis_layer, _out_route_data, _out_result_file, _output_network_analysis_layer_package];

        /// <summary>
        /// <para>Orders</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more locations that the routes of the VRP analysis will visit. An order can represent a delivery (for example, furniture delivery), a pickup (such as an airport shuttle bus picking up a passenger), or some type of service or inspection (a tree trimming job or building inspection, for instance).</para>
        ///   <para>When specifying the orders, you can set properties for each—such as its name or service time—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>Name</para>
        ///   <para>The name of the order. The name must be unique. If the name is left null, a name is automatically generated at solve time.</para>
        ///   <para>Description</para>
        ///   <para>The descriptive information about the order. This can contain any textual information for the order and has no restrictions for uniqueness. You may want to store a client's ID number in the Name field and the client's actual name or address in the Description field.</para>
        ///   <para>ServiceTime</para>
        ///   <para>This property specifies the amount of time that will be spent at the network location when the route visits it; that is, it stores the impedance value for the network location. A zero or null value indicates that the network location requires no service time.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>TimeWindowStart1</para>
        ///   <para>The beginning time of the first time window for the network location. This field can contain a null value; a null value indicates no beginning time.</para>
        ///   <para>A time window only states when a vehicle can arrive at an order; it doesn't state when the service time must be completed. To account for service time and departure before the time window ends, subtract ServiceTime from the TimeWindowEnd1 field.</para>
        ///   <para>The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) can contain a time-only value or a date and time value in a date field and cannot be integers representing milliseconds since epoch. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. If a time field such as TimeWindowStart1 has a time-only value (for example, 8:00 a.m.), the date is assumed to be the default date set for the analysis. Using date and time values (for example, 7/11/2010 8:00 a.m.) allows you to set time windows that span multiple days.</para>
        ///   <para>When solving a problem that spans multiple time zones, each order's time-window values refer to the time zone in which the order is located.</para>
        ///   <para>TimeWindowEnd1</para>
        ///   <para>The ending time of the first window for the network location. This field can contain a null value; a null value indicates no ending time.</para>
        ///   <para>TimeWindowStart2</para>
        ///   <para>The beginning time of the second time window for the network location. This field can contain a null value; a null value indicates that there is no second time window.</para>
        ///   <para>If the first time window is null as specified by the TimeWindowStart1 and TimeWindowEnd1 fields, the second time window must also be null.</para>
        ///   <para>If both time windows are non null, they can't overlap. Also, the second time window must occur after the first.</para>
        ///   <para>TimeWindowEnd2</para>
        ///   <para>The ending time of the second time window for the network location. This field can contain a null value.</para>
        ///   <para>When TimeWindowStart2 and TimeWindowEnd2 are both null, there is no second time window.</para>
        ///   <para>When TimeWindowStart2 is not null but TimeWindowEnd2 is null, there is a second time window that has a starting time but no ending time. This is valid.</para>
        ///   <para>MaxViolationTime1</para>
        ///   <para>A time window is considered violated if the arrival time occurs after the time window has ended. This field specifies the maximum allowable violation time for the first time window of the order. It can contain a zero value but can't contain negative values. A zero value indicates that a time window violation at the first time window of the order is unacceptable; that is, the first time window is hard. Conversely, a null value indicates that there is no limit on the allowable violation time. A nonzero value specifies the maximum amount of lateness; for example, a route can arrive at an order up to 30 minutes beyond the end of its first time window.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter</para>
        ///   <para>Time window violations can be tracked and weighted by the solver. Consequently, you can direct the VRP solver to do one of the following:</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Minimize the overall violation time regardless of the increase in travel cost for the fleet.</bullet_item><para/>
        ///       <bullet_item>Find a solution that balances overall violation time and travel cost.</bullet_item><para/>
        ///       <bullet_item>Ignore the overall violation time and minimize the travel cost for the fleet.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>By assigning an importance level for the Time Window Violation Importance parameter, you are essentially choosing one of these options. In any case, however, the solver will return an error if the value set for MaxViolationTime1 is surpassed.</para>
        ///   <para>MaxViolationTime2</para>
        ///   <para>The maximum allowable violation time for the second time window of the order. This field is analogous to the MaxViolationTime1 field.</para>
        ///   <para>InboundArriveTime</para>
        ///   <para>Defines when the item to be delivered to the order will be ready at the starting depot.</para>
        ///   <para>The order can be assigned to a route only if the inbound arrive time precedes the route's latest start time value; this way, the route cannot leave the depot before the item is ready to be loaded onto it.</para>
        ///   <para>This field can help model scenarios involving inbound-wave transshipments. For example, a job at an order requires special materials that are not currently available at the depot. The materials are being shipped from another location and will arrive at the depot at 11:00 a.m. To ensure a route that leaves before the shipment arrives isn't assigned to the order, the order's inbound arrive time is set to 11:00 a.m. The special materials arrive at 11:00 a.m., they are loaded onto the vehicle, and the vehicle departs from the depot to visit its assigned orders.</para>
        ///   <para>Notes:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>The route's start time, which includes service times, must occur after the inbound arrive time. If a route begins before an order's inbound arrive time, the order cannot be assigned to the route. The assignment is invalid even if the route has a start-depot service time that lasts until after the inbound arrive time.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>This time field can contain a time-only value or a date and time value. If a time-only value is set (for example, 11:00 AM), the date is assumed to be the default date set for the analysis. The default date is ignored, however, when any time field in the Depots, Routes, Orders, or Breaks includes a date with the time. In that case, specify all such fields with a date and time (for example, 7/11/2015 11:00 AM).    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>The VRP solver honors InboundArriveTime regardless of the DeliveryQuantities value.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>If an outbound depart time is also specified, its time value must occur after the inbound arrive time.    </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>OutboundDepartTime</para>
        ///   <para>Defines when the item to be picked up at the order must arrive at the ending depot.</para>
        ///   <para>The order can be assigned to a route only if the route can visit the order and reach its end depot before the specified outbound depart time.</para>
        ///   <para>This field can help model scenarios involving outbound-wave transshipments. For instance, a shipping company sends out delivery trucks to pick up packages from orders and bring them into a depot where they are forwarded on to other facilities, en route to their final destination. At 3:00 p.m. every day, a semitrailer stops at the depot to pick up the high-priority packages and take them directly to a central processing station. To avoid delaying the high-priority packages until the next day's 3:00 p.m. trip, the shipping company tries to have delivery trucks pick up the high-priority packages from orders and bring them to the depot before the 3:00 p.m. deadline. This is done by setting the outbound depart time to 3:00 p.m.</para>
        ///   <para>Notes:
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>The route's end time, including service times, must occur before the outbound depart time. If a route reaches a depot but doesn't complete its end-depot service time prior to the order's outbound depart time, the order cannot be assigned to the route.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>This time field can contain a time-only value or a date and time value. If a time-only value is set (for example, 11:00 AM), the date is assumed to be the default date set for the analysis. The default date is ignored, however, when any time field in Depots, Routes, Orders, or Breaks includes a date with the time. In that case, specify all such fields with a date and time (for example, 7/11/2015 11:00 AM).    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>The VRP solver honors OutboundDepartTime regardless of the PickupQuantities value.    </para>  </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>If an inbound arrive time is also specified, its time value must occur before the outbound depart time.    </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>DeliveryQuantities</para>
        ///   <para>The size of the delivery. You can specify size in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume.</para>
        ///   <para>Enter delivery quantities without indicating units. For example, if a 300-pound object needs to be delivered to an order, enter 300. You will need to remember that the value is in pounds.</para>
        ///   <para>If you are tracking multiple dimensions, separate the numeric values with a space. For example, if you are recording the weight and volume of a delivery that weighs 2,000 pounds and has a volume of 100 cubic feet, enter 2000 100. Again, you need to remember the units—in this case, pounds and cubic feet. You also need to remember the sequence in which the values and their corresponding units are entered.</para>
        ///   <para>Make sure that Capacities for Routes and DeliveryQuantities and PickupQuantities for Orders are specified in the same manner; that is, the values must be in the same units. If you are using multiple dimensions, the dimensions must be listed in the same sequence for all parameters. For example, if you specify weight in pounds, followed by volume in cubic feet for DeliveryQuantities, the capacity of your routes and the pickup quantities of your orders must be specified the same way: weight in pounds, then volume in cubic feet. If you combine units or change the sequence, you will get unwanted results with no warning messages.</para>
        ///   <para>An empty string or null value is equivalent to all dimensions being zero. If the string has an insufficient number of values in relation to the capacity count or dimensions being tracked, the remaining values are treated as zeros. Delivery quantities can't be negative.</para>
        ///   <para>PickupQuantities</para>
        ///   <para>The size of the pickup. You can specify size in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume. You cannot, however, use negative values. This field is analogous to the DeliveryQuantities field of Orders.</para>
        ///   <para>In the case of an exchange visit, an order can have both delivery and pickup quantities.</para>
        ///   <para>Revenue</para>
        ///   <para>The income generated if the order is included in a solution. This field can contain a null value—a null value indicates zero revenue—but it can't have a negative value.</para>
        ///   <para>Revenue is included in optimizing the objective function value but is not part of the solution's operating cost; that is, the TotalCost field in the routes never includes revenue in its output. However, revenue weights the relative importance of servicing orders.</para>
        ///   <para>Revenue is included in optimizing the objective function value but is not part of the solution's operating cost; that is, the TotalCost field in the route class never includes revenue in its output. However, revenue weights the relative importance of servicing orders.</para>
        ///   <para>SpecialtyNames</para>
        ///   <para>A space-separated string containing the names of the specialties required by the order. A null value indicates that the order doesn't require specialties.</para>
        ///   <para>The spelling of any specialties listed in the Orders and Routes classes must match exactly so that the VRP solver can link them together.</para>
        ///   <para>To illustrate what specialties are and how they work, assume a lawn care and tree trimming company has a portion of its orders that requires a bucket truck to trim tall trees. The company enters BucketTruck in the SpecialtyNames field for these orders to indicate their special need. SpecialtyNames is left null for the other orders. Similarly, the company also enters BucketTruck in the SpecialtyNames field of routes that are driven by trucks with hydraulic booms. It leaves the field null for the other routes. At solve time, the VRP solver assigns orders without special needs to any route, but it only assigns orders that need bucket trucks to routes that have them.</para>
        ///   <para>AssignmentRule</para>
        ///   <para>Specifies the rule for assigning the order to a route. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Exclude)—The order will be excluded from the subsequent solve operation.</bullet_item><para/>
        ///       <bullet_item>1 (Preserve route and relative sequence)—The solver must always assign the order to the preassigned route at the preassigned relative sequence during the solve operation. If this assignment rule can't be followed, it results in an order violation. With this setting, only the relative sequence is maintained, not the absolute sequence. To illustrate what this means, imagine there are two orders: A and B. They have sequence values of 2 and 3, respectively. If you set their AssignmentRule field values to Preserve route and relative sequence, the sequence values for A and B may change after solving because other orders, breaks, and depot visits can be sequenced before, between, or after A and B. However, B cannot be sequenced before A.</bullet_item><para/>
        ///       <bullet_item>2 (Preserve route)—The solver must always assign the order to the preassigned route during the solve operation. A valid sequence must also be set even though the sequence may or may not be preserved. If the order can't be assigned to the specified route, it results in an order violation.</bullet_item><para/>
        ///       <bullet_item>3 (Override)—The solver tries to preserve the route and sequence preassignment for the order during the solve operation. However, a new route or sequence for the order may be assigned if it helps minimize the overall value of the objective function. This is the default value.</bullet_item><para/>
        ///       <bullet_item>4 (Anchor first)—The solver ignores the route and sequence preassignment (if any) for the order during the solve operation. It assigns a route to the order and makes it the first order on that route to minimize the overall value of the objective function.</bullet_item><para/>
        ///       <bullet_item>5 (Anchor last)—The solver ignores the route and sequence preassignment (if any) for the order during the solve operation. It assigns a route to the order and makes it the last order on that route to minimize the overall value of the objective function.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>This field can't contain a null value.</para>
        ///   <para>CurbApproach</para>
        ///   <para>Specifies the direction a vehicle may arrive at and depart from the order. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Either side of vehicle)—The vehicle can approach and depart the order in either direction, so a U-turn is allowed at the incident. This setting can be chosen if it is possible and practical for a vehicle to turn around at the order. This decision may depend on the width of the road and the amount of traffic or whether the order has a parking lot where vehicles can enter and turn around.</bullet_item><para/>
        ///       <bullet_item>1 (Right side of vehicle)—When the vehicle approaches and departs the order, the order must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right-hand side.</bullet_item><para/>
        ///       <bullet_item>2 (Left side of vehicle)—When the vehicle approaches and departs the order, the curb must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left-hand side.</bullet_item><para/>
        ///       <bullet_item>3 (No U-Turn)—When the vehicle approaches the order, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>The CurbApproach attribute is designed to work with both kinds of national driving standards: right-hand traffic (United States) and left-hand traffic (United Kingdom). First, consider an order on the left side of a vehicle. It is always on the left side regardless of whether the vehicle travels on the left or right half of the road. What may change with national driving standards is your decision to approach an order from one of two directions, that is, so it ends up on the right or left side of the vehicle. For example, if you want to arrive at an order and not have a lane of traffic between the vehicle and the order, choose 1 (Right side of vehicle) in the United States and 2 (Left side of vehicle) in the United Kingdom.</para>
        ///   <para>RouteName</para>
        ///   <para>The name of the route to which the order is assigned.</para>
        ///   <para>This field is used to preassign an order to a specific route. It can contain a null value, indicating that the order is not preassigned to any route, and the solver identifies the best possible route assignment for the order. If this is set to null, the Sequence field must also be set to null.</para>
        ///   <para>After a solve operation, if the order is routed, the RouteName field contains the name of the route to which the order is assigned.</para>
        ///   <para>Sequence</para>
        ///   <para>This indicates the sequence of the order on its assigned route.</para>
        ///   <para>This field is used to specify the relative sequence of an order on the route. This field can contain a null value specifying that the order can be placed anywhere along the route. A null value can only occur together with a null RouteName value.</para>
        ///   <para>The input sequence values are positive and unique for each route (shared across renewal depot visits, orders, and breaks) but do not need to start from 1 or be contiguous.</para>
        ///   <para>After a solve operation, the Sequence field contains the sequence value of the order on its assigned route. Output sequence values for a route are shared across depot visits, orders, and breaks; start from 1 (at the starting depot); and are consecutive. The smallest possible output sequence value for a routed order is 2, since a route always begins at a depot.</para>
        ///   <para>Bearing</para>
        ///   <para>The direction in which a point is moving. The units are degrees and are measured clockwise from true north. This field is used in conjunction with the BearingTol field.</para>
        ///   <para>Bearing data is usually sent automatically from a mobile device equipped with a GPS receiver. Try to include bearing data if you are loading an input location that is moving, such as a pedestrian or a vehicle.</para>
        ///   <para>Using this field tends to prevent adding locations to the wrong edges, which can occur when a vehicle is near an intersection or an overpass, for example. Bearing also helps the tool determine on which side of the street the point is.</para>
        ///   <para>BearingTol</para>
        ///   <para>The bearing tolerance value creates a range of acceptable bearing values when locating moving points on an edge using the Bearing field. If the Bearing field value is within the range of acceptable values that are generated from the bearing tolerance on an edge, the point can be added as a network location there; otherwise, the closest point on the next-nearest edge is evaluated.</para>
        ///   <para>The units are in degrees, and the default value is 30. Values must be greater than 0 and less than 180. A value of 30 means that when Network Analyst attempts to add a network location on an edge, a range of acceptable bearing values is generated 15 degrees to either side of the edge (left and right) and in both digitized directions of the edge.</para>
        ///   <para>NavLatency</para>
        ///   <para>This field is only used in the solve process if the Bearing and BearingTol fields also have values; however, entering a NavLatency field value is optional, even when values are present in Bearing and BearingTol. NavLatency indicates how much cost is expected to elapse from the moment GPS information is sent from a moving vehicle to a server and the moment the processed route is received by the vehicle's navigation device.</para>
        ///   <para>The units of NavLatency are the same as the units of the impedance attribute.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定 VRP 分析的路径将访问的一个或多个位置。订单可以表示交付（例如，家具交付）、取件（例如机场穿梭巴士接载乘客）或某种类型的服务或检查（例如，树木修剪工作或建筑物检查）。</para>
        ///   <para>指定订单时，可以使用以下属性为每个订单设置属性，例如其名称或服务时间：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>名字</para>
        ///   <para>订单的名称。名称必须是唯一的。如果名称保留为 null，则在求解时自动生成名称。</para>
        ///   <para>描述</para>
        ///   <para>有关订单的描述性信息。这可以包含订单的任何文本信息，并且对唯一性没有限制。您可能希望将客户端的 ID 号存储在“名称”字段中，将客户端的实际姓名或地址存储在“描述”字段中。</para>
        ///   <para>服务时间</para>
        ///   <para>此属性指定路由访问网络位置时将在网络位置花费的时间量;也就是说，它存储网络位置的阻抗值。零值或空值表示网络位置不需要服务时间。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>时间窗口开始1</para>
        ///   <para>网络位置的第一个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有开始时间。</para>
        ///   <para>时间窗口仅说明车辆何时可以到达订单;它没有说明何时必须完成服务时间。若要考虑服务时间和时间窗口结束前的出发时间，请从 TimeWindowEnd1 字段中减去 ServiceTime。</para>
        ///   <para>时间窗口字段（TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2 和 TimeWindowEnd2）可以包含日期字段中的仅时间值或日期和时间值，并且不能是表示自 epoch 以来的毫秒数的整数。时间窗口字段的时区是使用 time_zone_usage_for_time_fields 参数指定的。如果时间字段（如 TimeWindowStart1）具有仅时间值（例如，上午 8：00），则假定该日期是为分析设置的默认日期。使用日期和时间值（例如，2010 年 7 月 11 日上午 8：00）可以设置跨多天的时间窗口。</para>
        ///   <para>在解决跨越多个时区的问题时，每个订单的时间窗口值都是指订单所在的时区。</para>
        ///   <para>时间窗口结束1</para>
        ///   <para>网络位置的第一个窗口的结束时间。此字段可以包含 null 值;null 值表示没有结束时间。</para>
        ///   <para>时间窗口开始2</para>
        ///   <para>网络位置的第二个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有第二个时间窗口。</para>
        ///   <para>如果 TimeWindowStart1 和 TimeWindowEnd1 字段指定的第一个时间窗口为 null，则第二个时间窗口也必须为 null。</para>
        ///   <para>如果两个时间窗口均为非空，则它们不能重叠。此外，第二个时间窗口必须发生在第一个时间窗口之后。</para>
        ///   <para>时间窗口结束2</para>
        ///   <para>网络位置的第二个时间窗口的结束时间。此字段可以包含 null 值。</para>
        ///   <para>当 TimeWindowStart2 和 TimeWindowEnd2 均为 null 时，没有第二个时间窗口。</para>
        ///   <para>当 TimeWindowStart2 不为 null 但 TimeWindowEnd2 为 null 时，存在第二个时间窗口，该时间窗口具有开始时间但没有结束时间。这是有效的。</para>
        ///   <para>MaxViolationTime1</para>
        ///   <para>如果到达时间发生在时间窗口结束后，则视为违反时间窗口。此字段指定订单首次时间窗口的最大允许违规时间。它可以包含零值，但不能包含负值。零值表示订单第一个时间窗口的时间窗口违规是不可接受的;也就是说，第一个时间窗口很难。相反，null 值表示对允许的违规时间没有限制。非零值指定最大延迟量;例如，路线可以在其第一个时间窗口结束后 30 分钟内到达订单。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定</para>
        ///   <para>求解器可以跟踪时间和加权时间窗口冲突。因此，您可以指示 VRP 求解器执行下列操作之一：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>通过为“时间窗口冲突重要性”参数分配重要性级别，您实际上是在选择这些选项之一。但是，在任何情况下，如果超过 MaxViolationTime1 设置的值，求解器将返回错误。</para>
        ///   <para>MaxViolationTime2</para>
        ///   <para>订单的第二个时间窗口允许的最大违规时间。此字段类似于 MaxViolationTime1 字段。</para>
        ///   <para>入站到达时间</para>
        ///   <para>定义要交付到订单的物料何时在起始仓库准备就绪。</para>
        ///   <para>仅当入站到达时间早于工艺路线的最新开始时间值时，才能将订单分配给工艺路线;这样，在物品准备好装载到仓库之前，路线无法离开仓库。</para>
        ///   <para>此字段可以帮助对涉及入站波转运的场景进行建模。例如，订单作业需要仓库当前不可用的特殊材料。这些材料是从另一个地点运来的，将于上午 11：00 到达仓库。为确保未将货件到达前离开的路线分配给订单，订单的入库到达时间设置为上午 11：00。特殊材料于上午 11：00 到达，它们被装载到车辆上，车辆从仓库出发前往访问其分配的订单。</para>
        /// <para>笔记：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>路线的开始时间（包括服务时间）必须在入站到达时间之后发生。如果工艺路线在订单的入库到达时间之前开始，则无法将订单分配给该工艺路线。即使工艺路线的起点-停运服务时间持续到入站到达时间之后，该分配也是无效的。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>此时间字段可以包含仅时间值或日期和时间值。如果设置了仅时间值（例如，上午 11：00），则假定该日期为为分析设置的默认日期。但是，当“仓库”、“路线”、“订单”或“停工”中的任何时间字段都包含带有时间的日期时，将忽略默认日期。在这种情况下，请使用日期和时间（例如，2015 年 7 月 11 日上午 11：00）指定所有此类字段。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>无论 DeliveryQuantity 值如何，VRP 求解器都遵循 InboundArriveTime。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>如果还指定了出站出发时间，则其时间值必须出现在入站到达时间之后。   </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>出站出发时间</para>
        ///   <para>定义在订单中取件的物品何时必须到达结束仓库。</para>
        ///   <para>只有当路线可以在指定的出站出发时间之前访问订单并到达其终点站时，才能将订单分配给该路线。</para>
        ///   <para>此字段可以帮助对涉及出站波转运的方案进行建模。例如，一家运输公司派出送货卡车从订单中提取包裹，并将它们带到仓库，然后转发到其他设施，然后前往最终目的地。每天下午 3：00，一辆半挂车停在仓库，取走高优先级包裹并将它们直接运送到中央处理站。为避免将高优先级包裹延迟到第二天下午 3：00 的行程，运输公司尝试让送货卡车从订单中提取高优先级包裹，并在下午 3：00 截止日期之前将它们带到仓库。这是通过将出站出发时间设置为下午 3：00 来完成的。</para>
        /// <para>笔记：
        ///   <bulletList>
        ///     <bullet_item>
        /// <para>路线的结束时间（包括服务时间）必须早于出站出发时间。如果路线到达仓库，但未在订单的出站出发时间之前完成其终点仓库服务时间，则无法将订单分配给该路线。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>此时间字段可以包含仅时间值或日期和时间值。如果设置了仅时间值（例如，上午 11：00），则假定该日期为为分析设置的默认日期。但是，当“仓库”、“路线”、“订单”或“停工”中的任何时间字段都包含包含时间的日期时，将忽略默认日期。在这种情况下，请使用日期和时间（例如，2015 年 7 月 11 日上午 11：00）指定所有此类字段。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>无论 PickupQuantity 值如何，VRP 求解器都遵循 OutboundDepartTime。   </para>  </bullet_item><para/>
        ///     <bullet_item>
        /// <para>如果还指定了入站到达时间，则其时间值必须出现在出站出发时间之前。   </para>  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>交货数量</para>
        ///   <para>交货的大小。您可以指定任何维度的尺寸，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。</para>
        ///   <para>输入交货数量而不注明单位。例如，如果需要将 300 磅重的物体交付到订单，请输入 300。您需要记住，该值以磅为单位。</para>
        ///   <para>如果要跟踪多个维度，请用空格分隔数值。例如，如果您要记录重量为 2,000 磅且体积为 100 立方英尺的交货的重量和体积，请输入 2000 100。同样，您需要记住单位 - 在这种情况下，磅和立方英尺。您还需要记住输入值及其相应单位的顺序。</para>
        ///   <para>确保以相同的方式指定“路线和交货数量”和“取货数量”的容量;也就是说，这些值必须采用相同的单位。如果使用多个维度，则所有参数的维度必须按相同的顺序列出。例如，如果为 DeliveryQuantity 指定重量（以磅为单位），然后指定以立方英尺为单位的体积，则必须以相同的方式指定路线的容量和订单的取货数量：重量（以磅为单位），然后以立方英尺为单位的体积。如果组合单位或更改顺序，则不会收到任何警告消息的不需要的结果。</para>
        ///   <para>空字符串或 null 值等效于所有维度均为零。如果字符串中与所跟踪的容量计数或维度相关的值数量不足，则其余值将被视为零。交货数量不能为负数。</para>
        ///   <para>提货数量</para>
        ///   <para>拾音器的大小。您可以指定任何维度的尺寸，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。但是，不能使用负值。此字段类似于 Orders 的 DeliveryQuantity 字段。</para>
        ///   <para>在交换访问的情况下，订单可以同时具有交货数量和取货数量。</para>
        ///   <para>收入</para>
        ///   <para>如果订单包含在解决方案中，则产生的收入。此字段可以包含空值（空值表示收入为零），但不能包含负值。</para>
        ///   <para>收入包含在优化目标函数值中，但不是解决方案运营成本的一部分;也就是说，工艺路线中的 TotalCost 字段从不在其输出中包含收入。但是，收入权衡了服务订单的相对重要性。</para>
        ///   <para>收入包含在优化目标函数值中，但不是解决方案运营成本的一部分;也就是说，route 类中的 TotalCost 字段从不在其输出中包含收入。但是，收入权衡了服务订单的相对重要性。</para>
        ///   <para>专业名称</para>
        ///   <para>一个以空格分隔的字符串，其中包含订单所需的专业名称。null 值表示订单不需要专业。</para>
        ///   <para>“订单”和“路线”类中列出的任何专业的拼写必须完全匹配，以便 VRP 求解器可以将它们链接在一起。</para>
        ///   <para>为了说明什么是专业以及它们是如何工作的，假设一家草坪护理和树木修剪公司有一部分订单需要铲斗卡车来修剪高大的树木。公司在 SpecialtyNames 字段中为这些订单输入 BucketTruck，以指示其特殊需求。对于其他订单，SpecialtyNames 保留为 null。同样，该公司还在 SpecialtyNames 字段中输入了 BucketTruck，这些路线由带有液压臂的卡车驱动。它使其他路由的字段为 null。在求解时，VRP 求解器将没有特殊需求的订单分配给任何路径，但仅将需要铲斗车的订单分配给具有铲斗车的路径。</para>
        ///   <para>AssignmentRule</para>
        ///   <para>指定将订单分配给工艺路线的规则。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>此字段不能包含 null 值。</para>
        ///   <para>遏制方法</para>
        ///   <para>指定车辆到达和离开订单的方向。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>CurbApproach 属性旨在适用于两种国家/地区驾驶标准：右侧交通（美国）和左侧交通（英国）。首先，考虑车辆左侧的订单。无论车辆是在道路的左半部分还是右半部分行驶，它始终在左侧。随着国家驾驶标准的变化，您可能会决定从两个方向之一接近订单，也就是说，它最终会落在车辆的右侧或左侧。例如，如果您想要到达订单，并且车辆和订单之间没有车道，请选择 1（车辆右侧）在美国和 2（车辆左侧）。</para>
        ///   <para>路由名称</para>
        ///   <para>将订单分配到的工艺路线的名称。</para>
        ///   <para>此字段用于将订单预先分配给特定路线。它可以包含一个 null 值，指示顺序未预先分配给任何路径，并且求解器会标识顺序的最佳可能路径分配。如果此值设置为 null，则 Sequence 字段也必须设置为 null。</para>
        ///   <para>求解操作后，如果传送订单，则 RouteName 字段包含将订单分配到的传送路线的名称。</para>
        ///   <para>序列</para>
        ///   <para>这表示订单在其分配的路线上的顺序。</para>
        ///   <para>此字段用于指定路线上订单的相对顺序。此字段可以包含一个空值，该值指定可以将订单放置在工艺路线上的任何位置。null 值只能与 null RouteName 值一起出现。</para>
        ///   <para>对于每条路线，输入序列值是正且唯一的（在续订仓库访问、订单和中断之间共享），但不需要从 1 开始或连续。</para>
        ///   <para>求解操作后，“序列”字段包含订单在其分配路径上的序列值。工艺路线的输出序列值在仓库访问、订单和中断之间共享;从 1 开始（在起始站）;并且是连续的。路由订单的最小可能输出序列值为 2，因为工艺路线始终从仓库开始。</para>
        ///   <para>轴承</para>
        ///   <para>点移动的方向。单位是度数，从正北顺时针测量。此字段与 BearingTol 字段结合使用。</para>
        ///   <para>轴承数据通常从配备 GPS 接收器的移动设备自动发送。如果要加载正在移动的输入位置（例如行人或车辆），请尝试包含方位角数据。</para>
        ///   <para>使用此字段可以防止将位置添加到错误的边缘，例如，当车辆靠近交叉路口或立交桥时，可能会发生这种情况。方位角还有助于工具确定点在街道的哪一侧。</para>
        ///   <para>轴承Tol</para>
        ///   <para>当使用“轴承”（Bearing） 场在边上定位移动点时，轴承公差值会创建可接受的轴承值范围。如果“方位角”（Bearing field） 值在边上的方位公差生成的可接受值范围内，则可以将该点添加为该点的网络位置;否则，将计算下一个最近边上的最近点。</para>
        ///   <para>单位以度为单位，默认值为 30。值必须大于 0 且小于 180。值为 30 表示当 Network Analyst 尝试在边上添加网络位置时，将在边的任一侧（左侧和右侧）以及边的两个数字化方向上生成一系列可接受的方位角值。</para>
        ///   <para>NavLatency（导航延迟）</para>
        ///   <para>仅当 Bearing 和 BearingTol 字段也具有值时，此字段才用于求解过程;但是，输入 NavLatency 字段值是可选的，即使值存在于 Bearing 和 BearingTol 中也是如此。NavLatency 表示从 GPS 信息从移动车辆发送到服务器的那一刻到车辆的导航设备接收到处理路线的那一刻，预计会花费多少成本。</para>
        ///   <para>NavLatency 的单位与阻抗属性的单位相同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Orders")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _orders { get; set; }


        /// <summary>
        /// <para>Depots</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more depots for the given vehicle routing problem. A depot is a location that a vehicle departs from at the beginning of its workday and returns to at the end of the workday. Vehicles are loaded (for deliveries) or unloaded (for pickups) at depots. In some cases, a depot can also act as a renewal location whereby the vehicle can unload or reload and continue performing deliveries and pickups. A depot has open and close times, as specified by a hard time window. Vehicles can't arrive at a depot outside of this time window.</para>
        ///   <para>When specifying the depots, you can set properties for each—such as its name or service time—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>Name</para>
        ///   <para>The name of the depot. The StartDepotName and EndDepotName fields on routes reference the names you specify here. It is also referenced by the route renewals, when used.</para>
        ///   <para>Depot names are not case sensitive but must be nonempty and unique.</para>
        ///   <para>Description</para>
        ///   <para>The descriptive information about the depot location. This can contain any textual information and has no restrictions for uniqueness.</para>
        ///   <para>For example, if you want to note which region a depot is in or the depot's address and telephone number, you can enter the information here rather than in the Name field.</para>
        ///   <para>TimeWindowStart1</para>
        ///   <para>The beginning time of the first time window for the network location. This field can contain a null value; a null value indicates no beginning time.</para>
        ///   <para>The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) can contain a time-only value or a date and time value in a date field and cannot be integers representing milliseconds since epoch. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. If a time field such as TimeWindowStart1 has a time-only value (for example, 8:00 a.m.), the date is assumed to be the default date set for the analysis. Using date and time values (for example, 7/11/2010 8:00 a.m.) allows you to set time windows that span multiple days.</para>
        ///   <para>When solving a problem that spans multiple time zones, each depot's time-window values refer to the time zone in which the depot is located.</para>
        ///   <para>TimeWindowEnd1</para>
        ///   <para>The ending time of the first window for the network location. This field can contain a null value; a null value indicates no ending time.</para>
        ///   <para>TimeWindowStart2</para>
        ///   <para>The beginning time of the second time window for the network location. This field can contain a null value; a null value indicates that there is no second time window.</para>
        ///   <para>If the first time window is null, as specified by the TimeWindowStart1 and TimeWindowEnd1 fields, the second time window must also be null.</para>
        ///   <para>If both time windows are not null, they can't overlap. Also, the second time window must occur after the first.</para>
        ///   <para>TimeWindowEnd2</para>
        ///   <para>The ending time of the second time window for the network location. This field can contain a null value.</para>
        ///   <para>When TimeWindowStart2 and TimeWindowEnd2 are both null, there is no second time window.</para>
        ///   <para>When TimeWindowStart2 is not null but TimeWindowEnd2 is null, there is a second time window that has a starting time but no ending time. This is valid.</para>
        ///   <para>CurbApproach</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Either side of vehicle)—The vehicle can approach and depart the depot in either direction, so a U-turn is allowed at the incident. This setting can be chosen if it is possible and practical for a vehicle to turn around at the depot. This decision may depend on the width of the road and the amount of traffic or whether the depot has a parking lot where vehicles can enter and turn around.</bullet_item><para/>
        ///       <bullet_item>1 (Right side of vehicle)—When the vehicle approaches and departs the depot, the depot must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right-hand side.</bullet_item><para/>
        ///       <bullet_item>2 (Left side of vehicle)—When the vehicle approaches and departs the depot, the curb must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left-hand side.</bullet_item><para/>
        ///       <bullet_item>3 (No U-Turn)—When the vehicle approaches the depot, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>The CurbApproach attribute is designed to work with both kinds of national driving standards: right-hand traffic (United States) and left-hand traffic (United Kingdom). First, consider a depot on the left side of a vehicle. It is always on the left side regardless of whether the vehicle travels on the left or right half of the road. What may change with national driving standards is your decision to approach a depot from one of two directions, that is, so it ends up on the right or left side of the vehicle. For example, if you want to arrive at a depot and not have a lane of traffic between the vehicle and the depot, choose 1 (Right side of vehicle) in the United States and 2 (Left side of vehicle) in the United Kingdom.</para>
        ///   <para>Bearing</para>
        ///   <para>The direction in which a point is moving. The units are degrees and are measured clockwise from true north. This field is used in conjunction with the BearingTol field.</para>
        ///   <para>Bearing data is usually sent automatically from a mobile device equipped with a GPS receiver. Try to include bearing data if you are loading an input location that is moving, such as a pedestrian or a vehicle.</para>
        ///   <para>Using this field tends to prevent adding locations to the wrong edges, which can occur when a vehicle is near an intersection or an overpass, for example. Bearing also helps the tool determine on which side of the street the point is.</para>
        ///   <para>BearingTol</para>
        ///   <para>The bearing tolerance value creates a range of acceptable bearing values when locating moving points on an edge using the Bearing field. If the Bearing field value is within the range of acceptable values that are generated from the bearing tolerance on an edge, the point can be added as a network location there; otherwise, the closest point on the next-nearest edge is evaluated.</para>
        ///   <para>The units are in degrees, and the default value is 30. Values must be greater than 0 and less than 180. A value of 30 means that when Network Analyst attempts to add a network location on an edge, a range of acceptable bearing values is generated 15 degrees to either side of the edge (left and right) and in both digitized directions of the edge.</para>
        ///   <para>NavLatency</para>
        ///   <para>This field is only used in the solve process if the Bearing and BearingTol fields also have values; however, entering a NavLatency field value is optional, even when values are present in Bearing and BearingTol. NavLatency indicates how much cost is expected to elapse from the moment GPS information is sent from a moving vehicle to a server and the moment the processed route is received by the vehicle's navigation device.</para>
        ///   <para>The units of NavLatency are the same as the units of the impedance attribute.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>为给定的车辆配送路线问题指定一个或多个仓库。仓库是车辆在工作日开始时出发并在工作日结束时返回的位置。车辆在仓库装货（用于送货）或卸货（用于取货）。在某些情况下，仓库还可以充当更新地点，车辆可以卸载或重新装载并继续执行交付和取货。仓库有开放和关闭时间，由硬时间窗口指定。车辆无法在此时间窗口之外到达仓库。</para>
        ///   <para>指定仓库时，可以使用以下属性为每个仓库设置属性，例如其名称或服务时间：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>名字</para>
        ///   <para>仓库的名称。路由上的 StartDepotName 和 EndDepotName 字段引用您在此处指定的名称。使用时，路由续订也会引用它。</para>
        ///   <para>仓库名称不区分大小写，但必须为非空且唯一。</para>
        ///   <para>描述</para>
        ///   <para>有关仓库位置的描述性信息。这可以包含任何文本信息，并且对唯一性没有限制。</para>
        ///   <para>例如，如果要记下仓库所在的区域或仓库的地址和电话号码，则可以在此处输入信息，而不是在“名称”字段中输入信息。</para>
        ///   <para>时间窗口开始1</para>
        ///   <para>网络位置的第一个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有开始时间。</para>
        ///   <para>时间窗口字段（TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2 和 TimeWindowEnd2）可以包含日期字段中的仅时间值或日期和时间值，并且不能是表示自 epoch 以来的毫秒数的整数。时间窗口字段的时区是使用 time_zone_usage_for_time_fields 参数指定的。如果时间字段（如 TimeWindowStart1）具有仅时间值（例如，上午 8：00），则假定该日期是为分析设置的默认日期。使用日期和时间值（例如，2010 年 7 月 11 日上午 8：00）可以设置跨多天的时间窗口。</para>
        ///   <para>在求解跨越多个时区的问题时，每个仓库的时间窗口值是指仓库所在的时区。</para>
        ///   <para>时间窗口结束1</para>
        ///   <para>网络位置的第一个窗口的结束时间。此字段可以包含 null 值;null 值表示没有结束时间。</para>
        ///   <para>时间窗口开始2</para>
        ///   <para>网络位置的第二个时间窗口的开始时间。此字段可以包含 null 值;null 值表示没有第二个时间窗口。</para>
        ///   <para>如果第一个时间窗口为 null，则如 TimeWindowStart1 和 TimeWindowEnd1 字段指定的那样，第二个时间窗口也必须为 null。</para>
        ///   <para>如果两个时间窗口都不为空，则它们不能重叠。此外，第二个时间窗口必须发生在第一个时间窗口之后。</para>
        ///   <para>时间窗口结束2</para>
        ///   <para>网络位置的第二个时间窗口的结束时间。此字段可以包含 null 值。</para>
        ///   <para>当 TimeWindowStart2 和 TimeWindowEnd2 均为 null 时，没有第二个时间窗口。</para>
        ///   <para>当 TimeWindowStart2 不为 null 但 TimeWindowEnd2 为 null 时，存在第二个时间窗口，该时间窗口具有开始时间但没有结束时间。这是有效的。</para>
        ///   <para>遏制方法</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>CurbApproach 属性旨在适用于两种国家/地区驾驶标准：右侧交通（美国）和左侧交通（英国）。首先，考虑车辆左侧的仓库。无论车辆是在道路的左半部分还是右半部分行驶，它始终在左侧。随着国家驾驶标准的变化，您可能会决定从两个方向之一接近停车场，也就是说，它最终会位于车辆的右侧或左侧。例如，如果您要到达停车场，并且车辆和停车场之间没有车道，请在美国选择 1（车辆右侧）和英国 2（车辆左侧）。</para>
        ///   <para>轴承</para>
        ///   <para>点移动的方向。单位是度数，从正北顺时针测量。此字段与 BearingTol 字段结合使用。</para>
        ///   <para>轴承数据通常从配备 GPS 接收器的移动设备自动发送。如果要加载正在移动的输入位置（例如行人或车辆），请尝试包含方位角数据。</para>
        ///   <para>使用此字段可以防止将位置添加到错误的边缘，例如，当车辆靠近交叉路口或立交桥时，可能会发生这种情况。方位角还有助于工具确定点在街道的哪一侧。</para>
        ///   <para>轴承Tol</para>
        ///   <para>当使用“轴承”（Bearing） 场在边上定位移动点时，轴承公差值会创建可接受的轴承值范围。如果“方位角”（Bearing field） 值在边上的方位公差生成的可接受值范围内，则可以将该点添加为该点的网络位置;否则，将计算下一个最近边上的最近点。</para>
        ///   <para>单位以度为单位，默认值为 30。值必须大于 0 且小于 180。值为 30 表示当 Network Analyst 尝试在边上添加网络位置时，将在边的任一侧（左侧和右侧）以及边的两个数字化方向上生成一系列可接受的方位角值。</para>
        ///   <para>NavLatency（导航延迟）</para>
        ///   <para>仅当 Bearing 和 BearingTol 字段也具有值时，此字段才用于求解过程;但是，输入 NavLatency 字段值是可选的，即使值存在于 Bearing 和 BearingTol 中也是如此。NavLatency 表示从 GPS 信息从移动车辆发送到服务器的那一刻到车辆的导航设备接收到处理路线的那一刻，预计会花费多少成本。</para>
        ///   <para>NavLatency 的单位与阻抗属性的单位相同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Depots")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _depots { get; set; }


        /// <summary>
        /// <para>Routes</para>
        /// <para><xdoc>
        ///   <para>Specifies one or more routes that describe vehicle and driver characteristics. A route can have start and end depot service times, a fixed or flexible starting time, time-based operating costs, distance-based operating costs, multiple capacities, various constraints on a driver's workday, and so on.</para>
        ///   <para>The routes can be specified with the following attributes:</para>
        ///   <para>Name</para>
        ///   <para>The name of the route. The name must be unique.</para>
        ///   <para>The tool generates a unique name at solve time if the field value is null; therefore, entering a value is optional in most cases. However, you must enter a name if your analysis includes breaks, route renewals, route zones, or orders that are preassigned to a route because the route name is used as a foreign key in these cases. Route names not are case sensitive.</para>
        ///   <para>StartDepotName</para>
        ///   <para>The name of the starting depot for the route. This field is a foreign key to the Name field in Depots.</para>
        ///   <para>If the StartDepotName value is null, the route will begin from the first order assigned. Omitting the start depot is useful when the vehicle's starting location is unknown or irrelevant to your problem. However, when StartDepotName is null, EndDepotName cannot also be null.</para>
        ///   <para>Virtual start depots are not allowed if orders or depots are in multiple time zones.</para>
        ///   <para>If the route is making deliveries and StartDepotName is null, it is assumed the cargo is loaded on the vehicle at a virtual depot before the route begins. For a route that has no renewal visits, its delivery orders (those with nonzero DeliveryQuantities values in Orders) are loaded at the start depot or virtual depot. For a route that has renewal visits, only the delivery orders before the first renewal visit are loaded at the start depot or virtual depot.</para>
        ///   <para>EndDepotName</para>
        ///   <para>The name of the ending depot for the route. This field is a foreign key to the Name field in Depots.</para>
        ///   <para>StartDepotServiceTime</para>
        ///   <para>The service time at the starting depot. This can be used to model the time spent loading the vehicle. This field can contain a null value; a null value indicates zero service time.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter.</para>
        ///   <para>The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. The depot service times can be assigned values corresponding to a full truckload or an average truckload, or you can make your own time estimate.</para>
        ///   <para>EndDepotServiceTime</para>
        ///   <para>The service time at the ending depot. This can be used to model the time spent unloading the vehicle. This field can contain a null value; a null value indicates zero service time.</para>
        ///   <para>The unit for this field value is specified by the Time Field Units parameter.</para>
        ///   <para>The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. The depot service times can be assigned values corresponding to a full truckload or an average truckload, or you can make your own time estimate.</para>
        ///   <para>EarliestStartTime</para>
        ///   <para>The earliest allowable starting time for the route. This is used by the solver in conjunction with the time window of the starting depot for determining feasible route start times.</para>
        ///   <para>This field can't contain null values and has a default time-only value of 8:00 AM. The default value is interpreted as 8:00 a.m. on the default date set for the analysis.</para>
        ///   <para>When solving a problem that spans multiple time zones, the time zone for EarliestStartTime is the same as the time zone in which the starting depot is located.</para>
        ///   <para>LatestStartTime</para>
        ///   <para>The latest allowable starting time for the route.</para>
        ///   <para>This field can't contain null values and has a default time-only value of 10:00 AM. The default value is interpreted as 10:00 a.m. on the default date set for the analysis.</para>
        ///   <para>When solving a problem that spans multiple time zones, the time zone for LatestStartTime is the same as the time zone in which the starting depot is located.</para>
        ///   <para>ArriveDepartDelay</para>
        ///   <para>This field stores the amount of travel time needed to accelerate the vehicle to normal travel speeds, decelerate it to a stop, and move it off and on the network (for example, in and out of parking). By including an ArriveDepartDelay value, the VRP solver is deterred from sending many routes to service physically coincident orders.</para>
        ///   <para>The cost for this property is incurred between visits to noncoincident orders, depots, and route renewals. For example, when a route starts from a depot and visits the first order, the total arrive/depart delay is added to the travel time. The same is true when traveling from the first order to the second order. If the second and third orders are coincident, the ArriveDepartDelay value is not added between them since the vehicle doesn't need to move. If the route travels to a route renewal, the value is added to the travel time again.</para>
        ///   <para>Although a vehicle must slow down and stop for a break and accelerate afterward, the VRP solver cannot add the ArriveDepartDelay value for breaks. This means that if a route leaves an order, stops for a break, and continues to the next order, the arrive/depart delay is added only once, not twice.</para>
        ///   <para>For example, assume there are five coincident orders in a high-rise building, and they are serviced by three different routes. This means three arrive/depart delays are incurred; that is, three drivers need to separately find parking places and enter the same building. However, if the orders can be serviced by one route instead, only one driver needs to park and enter the building, and only one arrive/depart delay is incurred. Since the VRP solver tries to minimize cost, it attempts to limit the arrive/depart delays and thus identify the single-route option. (Note that multiple routes may need to be sent when other constraints—such as specialties, time windows, or capacities—require it.)</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>Capacities</para>
        ///   <para>The maximum capacity of the vehicle. You can specify capacity in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume.</para>
        ///   <para>Enter capacities without indicating units. For example, if your vehicle can carry a maximum of 40,000 pounds, enter 40000. You need to remember that the value is in pounds.</para>
        ///   <para>If you are tracking multiple dimensions, separate the numeric values with a space. For example, if you are recording the weight and volume of a delivery that weighs 2,000 pounds and has a volume of 100 cubic feet, enter 2000 100. Again, you need to remember the units—in this case, pounds and cubic feet. You also need to remember the sequence in which the values and their corresponding units are entered.</para>
        ///   <para>Remembering the units and the unit sequence is important for a couple of reasons: first, so you can reinterpret the information later; second, so you can properly enter values for the DeliveryQuantities and PickupQuantities fields for the orders. Note that the VRP solver simultaneously refers to Capacities, DeliveryQuantities, and PickupQuantities to verify that a route doesn't become overloaded. Units can't be entered in the field and the VRP tool can't make unit conversions. You must enter the values for the three fields using the same units and the same unit sequence to ensure that the values are correctly interpreted. If you combine units or change the sequence in any of the three fields, unwanted results occur with no warning messages. It is recommended that you set up a unit and unit-sequence standard beforehand and continually refer to it when you enter values for these three fields.</para>
        ///   <para>An empty string or null value is equivalent to all values being zero. Capacity values can't be negative.</para>
        ///   <para>If the Capacities field has an insufficient number of values in relation to the DeliveryQuantities or PickupQuantities field for orders, the remaining values are treated as zero.</para>
        ///   <para>The VRP solver only performs a simple Boolean test to determine whether capacities are exceeded. If a route's capacity value is greater than or equal to the total quantity being carried, the VRP solver will assume the cargo fits in the vehicle. This could be incorrect, depending on the actual shape of the cargo and the vehicle. For example, the VRP solver allows you to fit a 1,000-cubic-foot sphere into a 1,000-cubic-foot truck that is 8 feet wide. In reality, however, since the sphere is 12.6 feet in diameter, it won't fit in the 8-foot wide truck.</para>
        ///   <para>FixedCost</para>
        ///   <para>A fixed monetary cost that is incurred only if the route is used in a solution (that is, it has orders assigned to it). This field can contain null values; a null value indicates zero fixed cost. This cost is part of the total route operating cost.</para>
        ///   <para>CostPerUnitTime</para>
        ///   <para>The monetary cost incurred—per unit of work time—for the total route duration, including travel times as well as service times and wait times at orders, depots, and breaks. This field can't contain a null value and has a default value of 1.0.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>CostPerUnitDistance</para>
        ///   <para>The monetary cost incurred—per unit of distance traveled—for the route length (total travel distance). This field can contain null values; a null value indicates zero cost.</para>
        ///   <para>The unit for this field value is specified by the distance_units parameter.</para>
        ///   <para>OvertimeStartTime</para>
        ///   <para>The duration of regular work time before overtime computation begins. This field can contain null values; a null value indicates that overtime does not apply.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>For example, if the driver is to be paid overtime when the total route duration extends beyond eight hours, OvertimeStartTime is specified as 480 (8 hours * 60 minutes/hour), given the time units are minutes.</para>
        ///   <para>CostPerUnitOvertime</para>
        ///   <para>The monetary cost incurred per time unit of overtime work. This field can contain null values; a null value indicates that the CostPerUnitOvertime value is the same as the CostPerUnitTime value.</para>
        ///   <para>MaxOrderCount</para>
        ///   <para>The maximum allowable number of orders on the route. This field can't contain null values and has a default value of 30.</para>
        ///   <para>MaxTotalTime</para>
        ///   <para>The maximum allowable route duration. The route duration includes travel times as well as service and wait times at orders, depots, and breaks. This field can contain null values; a null value indicates that there is no constraint on the route duration.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxTotalTravelTime</para>
        ///   <para>The maximum allowable travel time for the route. The travel time includes only the time spent driving on the network and does not include service or wait times.</para>
        ///   <para>This field can contain null values; a null value indicates that there is no constraint on the maximum allowable travel time. This field value can't be larger than the MaxTotalTime field value.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxTotalDistance</para>
        ///   <para>The maximum allowable travel distance for the route.</para>
        ///   <para>The unit for this field value is specified by the distance_units parameter.</para>
        ///   <para>This field can contain null values; a null value indicates that there is no constraint on the maximum allowable travel distance.</para>
        ///   <para>SpecialtyNames</para>
        ///   <para>A space-separated string containing the names of the specialties required by the order. A null value indicates that the order doesn't require specialties.</para>
        ///   <para>The spelling of any specialties listed in the Orders and Routes classes must match exactly so that the VRP solver can link them together.</para>
        ///   <para>To illustrate what specialties are and how they work, assume a lawn care and tree trimming company has a portion of its orders that requires a bucket truck to trim tall trees. The company enters BucketTruck in the SpecialtyNames field for these orders to indicate their special need. SpecialtyNames is left null for the other orders. Similarly, the company also enters BucketTruck in the SpecialtyNames field of routes that are driven by trucks with hydraulic booms. It leaves the field null for the other routes. At solve time, the VRP solver assigns orders without special needs to any route, but it only assigns orders that need bucket trucks to routes that have them.</para>
        ///   <para>AssignmentRule</para>
        ///   <para>Specifies the rule for assigning the order to a route. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>This field can't contain a null value.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>1 (Include)—The route is included in the solve operation. This is the default value.</bullet_item><para/>
        ///       <bullet_item>2 (Exclude)—The route is excluded from the solve operation.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定描述车辆和驾驶员特征的一条或多条路线。路线可以有起点和终点站服务时间、固定或灵活的开始时间、基于时间的运营成本、基于距离的运营成本、多种容量、对驾驶员工作日的各种限制等。</para>
        ///   <para>可以使用以下属性指定路由：</para>
        ///   <para>名字</para>
        ///   <para>路由的名称。名称必须是唯一的。</para>
        ///   <para>如果字段值为 null，则该工具将在求解时生成唯一名称;因此，在大多数情况下，输入值是可选的。但是，如果您的分析包括中断、工艺路线续订、工艺路线区域或预先分配给工艺路线的订单，则必须输入名称，因为在这些情况下，工艺路线名称将用作外键。路由名称不区分大小写。</para>
        ///   <para>StartDepot名称</para>
        ///   <para>工艺路线的起始仓库的名称。此字段是 Depot 中 Name 字段的外键。</para>
        ///   <para>如果 StartDepotName 值为 null，则路由将从分配的第一个订单开始。当车辆的起始位置未知或与您的问题无关时，省略起始站很有用。但是，当 StartDepotName 为 null 时，EndDepotName 也不能为 null。</para>
        ///   <para>如果订单或仓库位于多个时区，则不允许使用虚拟起始仓库。</para>
        ///   <para>如果工艺路线正在交货且 StartDepotName 为 null，则假定货物在工艺路线开始之前已在虚拟仓库装载到车辆上。对于没有续订访问的工艺路线，其交货订单（订单中 DeliveryQuantity 值不为零的交货订单）将在起始仓库或虚拟仓库加载。对于具有续订访问的工艺路线，仅在第一次续订访问之前的交货订单加载到起始仓库或虚拟仓库。</para>
        ///   <para>EndDepot名称</para>
        ///   <para>路线的终点仓库的名称。此字段是 Depot 中 Name 字段的外键。</para>
        ///   <para>StartDepotServiceTime（启动仓库服务时间）</para>
        ///   <para>起始仓库的服务时间。这可用于对装载车辆所花费的时间进行建模。此字段可以包含 null 值;空值表示零服务时间。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定。</para>
        ///   <para>起点和终点站的服务时间是固定值（由 StartDepotServiceTime 和 EndDepotServiceTime 字段值给出），不考虑路线的实际负载。例如，在起始仓库装载车辆所需的时间可能取决于订单的大小。可以为堆场服务时间分配与整车或平均整车相对应的值，也可以进行自己的时间估算。</para>
        ///   <para>EndDepotServiceTime（结束仓库服务时间）</para>
        ///   <para>终点站的服务时间。这可用于对卸载车辆所花费的时间进行建模。此字段可以包含 null 值;空值表示零服务时间。</para>
        ///   <para>此字段值的单位由时间字段单位参数指定。</para>
        ///   <para>起点和终点站的服务时间是固定值（由 StartDepotServiceTime 和 EndDepotServiceTime 字段值给出），不考虑路线的实际负载。例如，在起始仓库装载车辆所需的时间可能取决于订单的大小。可以为堆场服务时间分配与整车或平均整车相对应的值，也可以进行自己的时间估算。</para>
        ///   <para>最早的开始时间</para>
        ///   <para>路线的最早允许开始时间。求解器将其与起始车辆段的时间窗口结合使用，以确定可行的路径起始时间。</para>
        ///   <para>此字段不能包含 null 值，并且默认的仅限时间值为 8：00 AM。默认值被解释为为分析设置的默认日期的上午 8：00。</para>
        ///   <para>在解决跨多个时区的问题时，EarliestStartTime 的时区与起始仓库所在的时区相同。</para>
        ///   <para>最新开始时间</para>
        ///   <para>路线的最晚允许开始时间。</para>
        ///   <para>此字段不能包含 null 值，并且默认的仅限时间值为 10：00 AM。默认值被解释为为分析设置的默认日期的上午 10：00。</para>
        ///   <para>在解决跨多个时区的问题时，LatestStartTime 的时区与起始仓库所在的时区相同。</para>
        ///   <para>到达出发延迟</para>
        ///   <para>此字段存储将车辆加速到正常行驶速度、将其减速到停止以及将其移出网络（例如，进出停车场）所需的行驶时间。通过包含 ArriveDepartDelay 值，VRP 求解器可以阻止发送许多路由来为物理上重合的订单提供服务。</para>
        ///   <para>此属性的费用是在访问非重合订单、仓库和路线续订之间产生的。例如，当路线从仓库出发并访问第一个订单时，总到达/离开延迟将添加到旅行时间中。从一阶到二阶时也是如此。如果第二个和第三个订单重合，则不会在它们之间添加 ArriveDepartDelay 值，因为车辆不需要移动。如果路线行驶到路线续订，则该值将再次添加到旅行时间中。</para>
        ///   <para>尽管车辆必须减速并停下来休息，然后加速，但 VRP 求解器无法为休息添加 ArriveDepartDelay 值。这意味着，如果路线离开订单，停下来休息，然后继续执行下一个订单，则到达/离开延迟仅添加一次，而不是两次。</para>
        ///   <para>例如，假设在一栋高层建筑中有五个重合的订单，并且它们由三条不同的路线提供服务。这意味着会产生三次到达/离开延误;也就是说，三个司机需要分别找到停车位并进入同一栋大楼。但是，如果订单可以通过一条路线提供服务，则只需要一名司机停车并进入建筑物，并且只会产生一次到达/离开延迟。由于 VRP 求解器试图最小化成本，因此它会尝试限制到达/离开延迟，从而识别单路径选项。（请注意，当其他约束（如专业、时间窗口或容量）需要时，可能需要发送多个路由。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>能力</para>
        ///   <para>车辆的最大容量。您可以指定任何维度的容量，例如重量、体积或数量。您还可以指定多个维度，例如重量和体积。</para>
        ///   <para>输入容量而不指示单位。例如，如果您的车辆最多可以承载 40,000 磅，请输入 40000。您需要记住，该值以磅为单位。</para>
        ///   <para>如果要跟踪多个维度，请用空格分隔数值。例如，如果您要记录重量为 2,000 磅且体积为 100 立方英尺的交货的重量和体积，请输入 2000 100。同样，您需要记住单位 - 在这种情况下，磅和立方英尺。您还需要记住输入值及其相应单位的顺序。</para>
        ///   <para>记住单位和单位顺序很重要，原因有几个：首先，这样你以后就可以重新解释信息;其次，您可以正确输入订单的 DeliveryQuantity 和 PickupQuantity 字段的值。请注意，VRP 求解器同时引用 Capacities、DeliveryQuantity 和 PickupQuantities，以验证工艺路线是否未过载。无法在字段中输入单位，VRP 工具也无法进行单位转换。您必须使用相同的单位和相同的单位序列输入三个字段的值，以确保正确解释这些值。如果组合单位或更改三个字段中的任何一个字段中的顺序，则会出现不需要的结果，并且不会出现警告消息。建议您事先设置单位和单位序列标准，并在输入这三个字段的值时不断引用它。</para>
        ///   <para>空字符串或 null 值等效于所有值均为零。容量值不能为负数。</para>
        ///   <para>如果“产能”字段相对于订单的“DeliveryQuantities”或“PickupQuantities”字段的值数量不足，则其余值将被视为零。</para>
        ///   <para>VRP 求解器仅执行简单的布尔检验，以确定是否超出容量。如果路线的载客量值大于或等于所运载的总量，则 VRP 求解器将假定货物适合车辆。这可能是不正确的，具体取决于货物和车辆的实际形状。例如，VRP 求解器允许您将 1,000 立方英尺的球体装入 8 英尺宽的 1,000 立方英尺卡车中。然而，实际上，由于球体的直径为 12.6 英尺，因此它不适合 8 英尺宽的卡车。</para>
        ///   <para>固定成本</para>
        ///   <para>一种固定的货币成本，仅当在解决方案中使用工艺路线（即，它已分配订单）时才会产生。此字段可以包含 null 值;空值表示零固定成本。此成本是总路线运营成本的一部分。</para>
        ///   <para>CostPerUnitTime</para>
        ///   <para>总路线持续时间（包括旅行时间以及订单、仓库和休息时间的服务时间和等待时间）产生的每单位工作时间产生的货币成本。此字段不能包含 null 值，默认值为 1.0。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>成本每单位距离</para>
        ///   <para>路线长度（总行驶距离）产生的货币成本（每单位行驶距离）。此字段可以包含 null 值;空值表示零成本。</para>
        ///   <para>此字段值的单位由 distance_units 参数指定。</para>
        ///   <para>加班开始时间</para>
        ///   <para>加班计算开始前的正常工作时间的持续时间。此字段可以包含 null 值;null 值表示不适用加班。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>例如，如果在总路线持续时间超过 8 小时时要向驾驶员支付加班费，则 OvertimeStartTime 指定为 480（8 小时 * 60 分钟/小时），前提是时间单位为分钟。</para>
        ///   <para>CostPerUnit加班</para>
        ///   <para>按时间单位加班产生的货币成本。此字段可以包含 null 值;null 值指示 CostPerUnitOvertime 值与 CostPerUnitTime 值相同。</para>
        ///   <para>MaxOrderCount</para>
        ///   <para>工艺路线上允许的最大订单数。此字段不能包含 null 值，默认值为 30。</para>
        ///   <para>MaxTotalTime（最大总时间）</para>
        ///   <para>允许的最大路由持续时间。路线持续时间包括旅行时间以及订单、仓库和休息时间的服务和等待时间。此字段可以包含 null 值;空值表示对路由持续时间没有约束。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>最大总行程时间</para>
        ///   <para>路线的最大允许行驶时间。旅行时间仅包括在网络上行驶的时间，不包括服务或等待时间。</para>
        ///   <para>此字段可以包含 null 值;空值表示对最大允许行驶时间没有限制。此字段值不能大于 MaxTotalTime 字段值。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>最大总距离</para>
        ///   <para>路线的最大允许行驶距离。</para>
        ///   <para>此字段值的单位由 distance_units 参数指定。</para>
        ///   <para>此字段可以包含 null 值;空值表示对最大允许行驶距离没有约束。</para>
        ///   <para>专业名称</para>
        ///   <para>一个以空格分隔的字符串，其中包含订单所需的专业名称。null 值表示订单不需要专业。</para>
        ///   <para>“订单”和“路线”类中列出的任何专业的拼写必须完全匹配，以便 VRP 求解器可以将它们链接在一起。</para>
        ///   <para>为了说明什么是专业以及它们是如何工作的，假设一家草坪护理和树木修剪公司有一部分订单需要铲斗卡车来修剪高大的树木。公司在 SpecialtyNames 字段中为这些订单输入 BucketTruck，以指示其特殊需求。对于其他订单，SpecialtyNames 保留为 null。同样，该公司还在 SpecialtyNames 字段中输入了 BucketTruck，这些路线由带有液压臂的卡车驱动。它使其他路由的字段为 null。在求解时，VRP 求解器将没有特殊需求的订单分配给任何路径，但仅将需要铲斗车的订单分配给具有铲斗车的路径。</para>
        ///   <para>AssignmentRule</para>
        ///   <para>指定将订单分配给工艺路线的规则。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>此字段不能包含 null 值。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Routes")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _routes { get; set; }


        /// <summary>
        /// <para>Breaks</para>
        /// <para><xdoc>
        ///   <para>These are the rest periods, or breaks, for the routes in a given vehicle routing problem. A break is associated with exactly one route and can be taken after completing an order, while en route to an order, or prior to servicing an order. It has a start time and a duration for which the driver may or may not be paid. There are three options for establishing when a break begins: a time window, a maximum travel time, or a maximum work time.</para>
        ///   <para>Time-window breaks are not allowed if orders or depots are in multiple time zones unless times are in UTC.</para>
        ///   <para>When specifying the breaks, you can set properties for each—such as its name or service time—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>RouteName</para>
        ///   <para>The name of the route to which the break applies. Although a break is assigned to exactly one route, many breaks can be assigned to the same route.</para>
        ///   <para>This field is a foreign key to the Name field in the routes, so it can't have a null value.</para>
        ///   <para>Precedence</para>
        ///   <para>Precedence values sequence the breaks of a given route. Breaks with a precedence value of 1 occur before those with a value of 2, and so on.</para>
        ///   <para>All breaks must have a precedence value, regardless of whether they are time-window, maximum-travel-time, or maximum-work-time breaks.</para>
        ///   <para>ServiceTime</para>
        ///   <para>The duration of the break. This field can't contain null values. The default value is 60.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>TimeWindowStart</para>
        ///   <para>The starting time of the break's time window. Both a starting time and end time must be specified.</para>
        ///   <para>If this field has a value, the MaxTravelTimeBetweenBreaks and MaxCumulWorkTime field values must be null, and all other breaks in the analysis must have null values for MaxTravelTimeBetweenBreaks and MaxCumulWorkTime.</para>
        ///   <para>An error will occur at solve time if a route has multiple breaks with overlapping time windows.</para>
        ///   <para>The time window fields in breaks can contain a time-only value or a date and time value in a date field and not as integers representing milliseconds since epoch. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. If a time field, such as TimeWindowStart, has a time-only value (for example, 12:00 p.m.), the date is assumed to be the date specified by the Default Date parameter (default_date in Python). Using date and time values (for example, 7/11/2012, 12:00 p.m.) allows you to specify time windows that span two or more days. This is beneficial when a break should be taken sometime before and after midnight.</para>
        ///   <para>TimeWindowEnd</para>
        ///   <para>The ending time of the break's time window. Both a starting time and end time must be specified.</para>
        ///   <para>If this field has a value, MaxTravelTimeBetweenBreaks and MaxCumulWorkTime must be null, and all other breaks in the analysis must have null values for MaxTravelTimeBetweenBreaks and MaxCumulWorkTime.</para>
        ///   <para>MaxViolationTime</para>
        ///   <para>This field specifies the maximum allowable violation time for a time-window break. A time window is considered violated if the arrival time falls outside the time range.</para>
        ///   <para>A zero value indicates that the time window cannot be violated; that is, the time window is hard. A nonzero value specifies the maximum amount of lateness. For example, the break can begin up to 30 minutes beyond the end of its time window, but the lateness is penalized pursuant to the Time Window Violation Importance parameter.</para>
        ///   <para>This property can be null. A null value with TimeWindowStart and TimeWindowEnd values indicates that there is no limit on the allowable violation time. If MaxTravelTimeBetweenBreaks or MaxCumulWorkTime has a value, MaxViolationTime must be null.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxTravelTimeBetweenBreaks</para>
        ///   <para>The maximum amount of travel time that can be accumulated before the break is taken. The travel time is accumulated either from the end of the previous break or, if a break has not yet been taken, from the start of the route.</para>
        ///   <para>If this is the route's final break, MaxTravelTimeBetweenBreaks also indicates the maximum travel time that can be accumulated from the final break to the end depot.</para>
        ///   <para>This field is designed to limit how long a person can drive until a break is required. For instance, if the time unit for the analysis is set to minutes, and MaxTravelTimeBetweenBreaks has a value of 120, the driver will get a break after two hours of driving. To assign a second break after two more hours of driving, the second break's MaxTravelTimeBetweenBreaks property must be 120.</para>
        ///   <para>If this field has a value, TimeWindowStart, TimeWindowEnd, MaxViolationTime, and MaxCumulWorkTime must be null for an analysis to solve successfully.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>MaxCumulWorkTime</para>
        ///   <para>The maximum amount of work time that can be accumulated before the break is taken. Work time is always accumulated from the beginning of the route.</para>
        ///   <para>Work time is the sum of travel time and service times at orders, depots, and breaks. Note, however, that this excludes wait time, which is the time a route (or driver) spends waiting at an order or depot for a time window to begin.</para>
        ///   <para>This field limits how long a person can work until a break is required. For example, if the time unit for the analysis is set to minutes, MaxCumulWorkTime has a value of 120, and ServiceTime has a value of 15, the driver will get a 15-minute break after two hours of work.</para>
        ///   <para>Continuing with the last example, assume a second break is needed after three more hours of work. To specify this break, enter 315 (five hours and 15 minutes) as the second break's MaxCumulWorkTime value. This number includes the MaxCumulWorkTime and ServiceTime values of the preceding break, along with the three additional hours of work time before granting the second break. To avoid taking maximum-work-time breaks prematurely, remember that they accumulate work time from the beginning of the route and that work time includes the service time at previously visited depots, orders, and breaks.</para>
        ///   <para>If this field has a value, TimeWindowStart, TimeWindowEnd, MaxViolationTime, and MaxTravelTimeBetweenBreaks must be null for an analysis to solve successfully.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>IsPaid</para>
        ///   <para>A Boolean value indicating whether the break is paid or unpaid. Setting this field value to 1 indicates that the time spent at the break is included in the route cost computation and overtime determination. A value of 0 indicates otherwise. The default value is 1.</para>
        ///   <para>Sequence</para>
        ///   <para>Indicates the sequence of the break on its route. This field can contain null values, which causes the solver to assign the break sequence. If sequence values are specified, they should be positive and unique for each route (shared across renewal depot visits, orders, and breaks) but need not start from 1 or be contiguous.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>这些是给定车辆路径问题中路线的休息时间或休息时间。中断仅与一条路线相关联，可以在完成订单后、前往订单的途中或为订单提供服务之前进行。它有一个开始时间和持续时间，司机可能会或可能不会得到报酬。有三个选项可用于确定休息时间的开始时间：时间窗口、最大旅行时间或最大工作时间。</para>
        ///   <para>如果订单或仓库位于多个时区，则不允许时间窗口中断，除非时间采用 UTC。</para>
        ///   <para>指定中断时，可以使用以下属性设置每个中断的属性，例如其名称或服务时间：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>路由名称</para>
        ///   <para>应用中断的路由的名称。虽然一个中断只分配给一条路径，但可以将多个中断分配给同一路径。</para>
        ///   <para>此字段是路由中 Name 字段的外键，因此它不能具有 null 值。</para>
        ///   <para>优先</para>
        ///   <para>优先级值对给定路由的中断进行排序。优先级值为 1 的中断发生在值为 2 的中断之前，依此类推。</para>
        ///   <para>所有休息时间都必须具有优先值，无论它们是时间窗口、最大旅行时间还是最大工作时间休息时间。</para>
        ///   <para>服务时间</para>
        ///   <para>休息的持续时间。此字段不能包含 null 值。默认值为 60。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>时间窗口开始</para>
        ///   <para>中断时间窗口的开始时间。必须同时指定开始时间和结束时间。</para>
        ///   <para>如果此字段具有值，则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 字段值必须为 null，并且分析中的所有其他中断必须具有 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 的空值。</para>
        ///   <para>如果路径具有多个中断且时间窗口重叠，则在求解时将发生错误。</para>
        ///   <para>中断中的时间窗口字段可以包含仅时间值或日期字段中的日期和时间值，而不是表示自纪元以来的毫秒数的整数。时间窗口字段的时区是使用 time_zone_usage_for_time_fields 参数指定的。如果时间字段（如 TimeWindowStart）具有仅限时间的值（例如，下午 12：00），则假定该日期是由 Default Date 参数（Python 中的 default_date）指定的日期。使用日期和时间值（例如，2012 年 7 月 11 日，中午 12：00）可以指定跨越两天或更多天的时间窗口。当应该在午夜前后的某个时间休息时，这是有益的。</para>
        ///   <para>时间窗口结束</para>
        ///   <para>休息时间窗口的结束时间。必须同时指定开始时间和结束时间。</para>
        ///   <para>如果此字段具有值，则 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 必须为 null，并且分析中的所有其他中断必须具有 MaxTravelTimeBetweenBreaks 和 MaxCumulWorkTime 的 null 值。</para>
        ///   <para>MaxViolationTime（最大违规时间）</para>
        ///   <para>此字段指定时间窗口中断的最大允许违规时间。如果到达时间超出时间范围，则视为违反时间窗口。</para>
        ///   <para>零值表示不能违反时间窗口;也就是说，时间窗口很难。非零值指定最大延迟量。例如，休息时间可以在其时间窗口结束后最多 30 分钟开始，但迟到会根据时间窗口违规重要性参数进行处罚。</para>
        ///   <para>此属性可以为 null。具有 TimeWindowStart 和 TimeWindowEnd 值的 null 值表示允许的违规时间没有限制。如果 MaxTravelTimeBetweenBreaks 或 MaxCumulWorkTime 具有值，则 MaxViolationTime 必须为 null。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>MaxTravelTimeBetweenBreaks</para>
        ///   <para>休息前可以累积的最大旅行时间。旅行时间从上一次休息结束开始累积，或者，如果尚未休息，则从路线开始累积。</para>
        ///   <para>如果这是路线的最终停靠点，则 MaxTravelTimeBetweenBreaks 还会指示从最终停靠点到终点站可以累积的最大行驶时间。</para>
        ///   <para>此字段旨在限制一个人在需要休息之前可以行驶多长时间。例如，如果分析的时间单位设置为分钟，并且 MaxTravelTimeBetweenBreaks 的值为 120，则驾驶员将在驾驶两小时后休息。若要在行驶两个小时后分配第二个休息时间，第二个休息时间的 MaxTravelTimeBetweenBreaks 属性必须为 120。</para>
        ///   <para>如果此字段具有值，则 TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxCumulWorkTime 必须为 null，分析才能成功求解。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>MaxCumulWorkTime</para>
        ///   <para>休息前可以累积的最大工作时间。工作时间总是从路线的起点开始累积的。</para>
        ///   <para>工作时间是订单、仓库和休息处的旅行时间和服务时间的总和。但请注意，这不包括等待时间，等待时间是路线（或司机）在订单或仓库等待时间窗口开始的时间。</para>
        ///   <para>此字段限制一个人在需要休息之前可以工作多长时间。例如，如果分析的时间单位设置为分钟，MaxCumulWorkTime 的值为 120，ServiceTime 的值为 15，则驱动程序将在工作两小时后获得 15 分钟的休息时间。</para>
        ///   <para>继续最后一个示例，假设在再工作三个小时后需要第二次休息。若要指定此中断，请输入 315（5 小时 15 分钟）作为第二个中断的 MaxCumulWorkTime 值。此数字包括前一个中断的 MaxCumulWorkTime 和 ServiceTime 值，以及在授予第二个中断之前的额外三个小时的工作时间。为避免过早地进行最大工作时间休息，请记住，它们从路线开始累积工作时间，并且工作时间包括以前访问过的仓库、订单和休息时间的服务时间。</para>
        ///   <para>如果此字段具有值，则 TimeWindowStart、TimeWindowEnd、MaxViolationTime 和 MaxTravelTimeBetweenBreaks 必须为 null 才能成功求解分析。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>已付费</para>
        ///   <para>一个 Boolean 值，该值指示中断是付费还是未付费。将此字段值设置为 1 表示在中断时花费的时间包含在工艺路线成本计算和加班确定中。值为 0 表示其他情况。默认值为 1。</para>
        ///   <para>序列</para>
        ///   <para>指示其路线上的中断顺序。此字段可以包含 null 值，这会导致求解器分配中断序列。如果指定了序列值，则对于每条路径，序列值应为正且唯一（在续订仓库访问、订单和中断之间共享），但不必从 1 开始或连续。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Breaks")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _breaks { get; set; } = null;


        /// <summary>
        /// <para>Time Units</para>
        /// <para><xdoc>
        ///   <para>The time units for all time-based field values in the analysis. Many features and records in a VRP analysis have fields for storing time values, such as ServiceTime for orders and CostPerUnitTime for routes. To minimize data entry requirements, these field values don't include units. Instead, all distance-based field values must be entered in the same units, and this parameter is used to specify the units of those values.</para>
        ///   <bulletList>
        ///     <bullet_item>Seconds—The time unit is seconds.</bullet_item><para/>
        ///     <bullet_item>Minutes—The time unit is minutes.</bullet_item><para/>
        ///     <bullet_item>Hours—The time unit is hours.</bullet_item><para/>
        ///     <bullet_item>Days—The time unit is days.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Note that output time-based fields use the same units specified by this parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>分析中所有基于时间的字段值的时间单位。VRP 分析中的许多要素和记录都具有用于存储时间值的字段，例如订单的 ServiceTime 和工艺路线的 CostPerUnitTime。为了最大程度地减少数据输入要求，这些字段值不包括单位。相反，所有基于距离的字段值必须以相同的单位输入，并且此参数用于指定这些值的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>秒 - 时间单位为秒。</bullet_item><para/>
        ///     <bullet_item>分钟 - 时间单位为分钟。</bullet_item><para/>
        ///     <bullet_item>小时 - 时间单位为小时。</bullet_item><para/>
        ///     <bullet_item>天 - 时间单位为天。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>请注意，基于时间的输出字段使用此参数指定的相同单位。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_units_value _time_units { get; set; } = _time_units_value._Minutes;

        public enum _time_units_value
        {
            /// <summary>
            /// <para>Seconds</para>
            /// <para>Seconds—The time unit is seconds.</para>
            /// <para>秒 - 时间单位为秒。</para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("Seconds")]
            _Seconds,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—The time unit is minutes.</para>
            /// <para>分钟 - 时间单位为分钟。</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—The time unit is hours.</para>
            /// <para>小时 - 时间单位为小时。</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("Hours")]
            _Hours,

            /// <summary>
            /// <para>Days</para>
            /// <para>Days—The time unit is days.</para>
            /// <para>天 - 时间单位为天。</para>
            /// </summary>
            [Description("Days")]
            [GPEnumValue("Days")]
            _Days,

        }

        /// <summary>
        /// <para>Distance Units</para>
        /// <para><xdoc>
        ///   <para>The distance units for all distance-based field values in the analysis. Many features and records in a VRP analysis have fields for storing distance values, such as MaxTotalDistance and CostPerUnitDistance for routes. To minimize data entry requirements, these field values don't include units. Instead, all distance-based field values must be entered in the same units, and this parameter is used to specify the units of those values.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters—The linear unit is meters.</bullet_item><para/>
        ///     <bullet_item>Kilometers—The linear unit is kilometers.</bullet_item><para/>
        ///     <bullet_item>Feet—The linear unit is feet.</bullet_item><para/>
        ///     <bullet_item>Yards—The linear unit is yards.</bullet_item><para/>
        ///     <bullet_item>Miles—The linear unit is miles.</bullet_item><para/>
        ///     <bullet_item>Nautical Miles—The linear unit is nautical miles.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Note that output distance-based fields use the same units specified by this parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>分析中所有基于距离的字段值的距离单位。VRP 分析中的许多要素和记录都具有用于存储距离值的字段，例如路径的 MaxTotalDistance 和 CostPerUnitDistance。为了最大程度地减少数据输入要求，这些字段值不包括单位。相反，所有基于距离的字段值必须以相同的单位输入，并且此参数用于指定这些值的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米 - 线性单位为米。</bullet_item><para/>
        ///     <bullet_item>千米—线性单位为千米。</bullet_item><para/>
        ///     <bullet_item>英尺 - 线性单位为英尺。</bullet_item><para/>
        ///     <bullet_item>码 - 线性单位为码。</bullet_item><para/>
        ///     <bullet_item>英里—线性单位为英里。</bullet_item><para/>
        ///     <bullet_item>海里—线性单位为海里。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>请注意，基于距离的输出字段使用此参数指定的相同单位。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_units_value _distance_units { get; set; } = _distance_units_value._Miles;

        public enum _distance_units_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The linear unit is meters.</para>
            /// <para>米 - 线性单位为米。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("Meters")]
            _Meters,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The linear unit is kilometers.</para>
            /// <para>千米—线性单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("Kilometers")]
            _Kilometers,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The linear unit is feet.</para>
            /// <para>英尺 - 线性单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("Feet")]
            _Feet,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The linear unit is yards.</para>
            /// <para>码 - 线性单位为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("Yards")]
            _Yards,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The linear unit is miles.</para>
            /// <para>英里—线性单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("Miles")]
            _Miles,

            /// <summary>
            /// <para>Nautical Miles</para>
            /// <para>Nautical Miles—The linear unit is nautical miles.</para>
            /// <para>海里—线性单位为海里。</para>
            /// </summary>
            [Description("Nautical Miles")]
            [GPEnumValue("NauticalMiles")]
            _NauticalMiles,

        }

        /// <summary>
        /// <para>Analysis Region</para>
        /// <para><xdoc>
        ///   <para>The region in which the analysis will be performed. If a value is not specified for this parameter, the tool will automatically calculate the region name based on the location of the input points. Setting the name of the region is required only if the automatic detection of the region name is not accurate for your inputs.</para>
        ///   <para>To specify a region, use one of the following values:</para>
        ///   <bulletList>
        ///     <bullet_item>Europe—The analysis region is Europe.</bullet_item><para/>
        ///     <bullet_item>Japan—The analysis region is Japan.</bullet_item><para/>
        ///     <bullet_item>Korea—The analysis region is Korea.</bullet_item><para/>
        ///     <bullet_item>Middle East And Africa—The analysis region is Middle East and Africa.</bullet_item><para/>
        ///     <bullet_item>North America—The analysis region is North America.</bullet_item><para/>
        ///     <bullet_item>South America—The analysis region is South America.</bullet_item><para/>
        ///     <bullet_item>South Asia—The analysis region is South Asia.</bullet_item><para/>
        ///     <bullet_item>Thailand—The analysis region is Thailand.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The following region names are no longer supported and will be removed in future releases. If you specify one of the deprecated region names, the tool automatically assigns a supported region name for your region.
        ///   <bulletList>
        ///     <bullet_item>Greece redirects to Europe  </bullet_item><para/>
        ///     <bullet_item>India redirects to SouthAsia  </bullet_item><para/>
        ///     <bullet_item>Oceania redirects to SouthAsia  </bullet_item><para/>
        ///     <bullet_item>SouthEastAsia redirects to SouthAsia  </bullet_item><para/>
        ///     <bullet_item>Taiwan redirects to SouthAsia  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将在其中执行分析的区域。如果未为此参数指定值，则该工具将根据输入点的位置自动计算区域名称。仅当输入的区域名称的自动检测不准确时，才需要设置区域名称。</para>
        ///   <para>若要指定区域，请使用下列值之一：</para>
        ///   <bulletList>
        ///     <bullet_item>欧洲 - 分析区域为欧洲。</bullet_item><para/>
        ///     <bullet_item>日本 - 分析区域为日本。</bullet_item><para/>
        ///     <bullet_item>韩国—分析区域为韩国。</bullet_item><para/>
        ///     <bullet_item>中东和非洲 - 分析区域为中东和非洲。</bullet_item><para/>
        ///     <bullet_item>北美 - 分析区域为北美。</bullet_item><para/>
        ///     <bullet_item>南美洲 - 分析区域为南美洲。</bullet_item><para/>
        ///     <bullet_item>南亚—分析区域为南亚。</bullet_item><para/>
        ///     <bullet_item>泰国 - 分析区域为泰国。</bullet_item><para/>
        ///   </bulletList>
        /// <para>以下区域名称不再受支持，并将在将来的版本中删除。如果您指定其中一个已弃用的区域名称，则该工具会自动为您的区域分配支持的区域名称。
        ///   <bulletList>
        ///     <bullet_item>希腊重定向到欧洲</bullet_item><para/>
        ///     <bullet_item>印度重定向到南亚</bullet_item><para/>
        ///     <bullet_item>大洋洲重定向到南亚</bullet_item><para/>
        ///     <bullet_item>东南亚重定向到南亚</bullet_item><para/>
        ///     <bullet_item>台湾重定向到南亚</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Analysis Region")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _analysis_region_value? _analysis_region { get; set; } = null;

        public enum _analysis_region_value
        {
            /// <summary>
            /// <para>Europe</para>
            /// <para>Europe—The analysis region is Europe.</para>
            /// <para>欧洲 - 分析区域为欧洲。</para>
            /// </summary>
            [Description("Europe")]
            [GPEnumValue("Europe")]
            _Europe,

            /// <summary>
            /// <para>Japan</para>
            /// <para>Japan—The analysis region is Japan.</para>
            /// <para>日本 - 分析区域为日本。</para>
            /// </summary>
            [Description("Japan")]
            [GPEnumValue("Japan")]
            _Japan,

            /// <summary>
            /// <para>Korea</para>
            /// <para>Korea—The analysis region is Korea.</para>
            /// <para>韩国—分析区域为韩国。</para>
            /// </summary>
            [Description("Korea")]
            [GPEnumValue("Korea")]
            _Korea,

            /// <summary>
            /// <para>Middle East And Africa</para>
            /// <para>Middle East And Africa—The analysis region is Middle East and Africa.</para>
            /// <para>中东和非洲 - 分析区域为中东和非洲。</para>
            /// </summary>
            [Description("Middle East And Africa")]
            [GPEnumValue("MiddleEastAndAfrica")]
            _MiddleEastAndAfrica,

            /// <summary>
            /// <para>North America</para>
            /// <para>North America—The analysis region is North America.</para>
            /// <para>北美 - 分析区域为北美。</para>
            /// </summary>
            [Description("North America")]
            [GPEnumValue("NorthAmerica")]
            _NorthAmerica,

            /// <summary>
            /// <para>South America</para>
            /// <para>South America—The analysis region is South America.</para>
            /// <para>南美洲 - 分析区域为南美洲。</para>
            /// </summary>
            [Description("South America")]
            [GPEnumValue("SouthAmerica")]
            _SouthAmerica,

            /// <summary>
            /// <para>South Asia</para>
            /// <para>South Asia—The analysis region is South Asia.</para>
            /// <para>南亚—分析区域为南亚。</para>
            /// </summary>
            [Description("South Asia")]
            [GPEnumValue("SouthAsia")]
            _SouthAsia,

            /// <summary>
            /// <para>Thailand</para>
            /// <para>Thailand—The analysis region is Thailand.</para>
            /// <para>泰国 - 分析区域为泰国。</para>
            /// </summary>
            [Description("Thailand")]
            [GPEnumValue("Thailand")]
            _Thailand,

        }

        /// <summary>
        /// <para>Default Date</para>
        /// <para>The default date for time field values that specify a time of day without including a date. You can find these time fields in various input parameters, such as the ServiceTime attributes in the orders and breaks parameters.</para>
        /// <para>指定一天中的时间而不包含日期的字段值的默认日期。您可以在各种输入参数中找到这些时间字段，例如订单和中断参数中的 ServiceTime 属性。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Default Date")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _default_date { get; set; } = null;


        /// <summary>
        /// <para>UTurn at Junctions</para>
        /// <para><xdoc>
        ///   <para>Specifies whether to restrict or permit the service area to make U-turns at junctions. To understand the parameter values, consider the following terminology: a junction is a point where a street segment ends and potentially connects to one or more other segments; a pseudojunction is a point where exactly two streets connect to one another; an intersection is a point where three or more streets connect; and a dead end is where one street segment ends without connecting to another.</para>
        ///   <bulletList>
        ///     <bullet_item>Allow UTurns—U-turns are permitted everywhere. Allowing U-turns implies that the vehicle can turn around at any junction and double back on the same street. This is the default value.</bullet_item><para/>
        ///     <bullet_item>No UTurns—U-turns are prohibited at all junctions: pseudojunctions, intersections, and dead ends. Note, however, that U-turns may be permitted even when this option is chosen. To prevent U-turns at incidents and facilities, set the CurbApproach field value to prohibit U-turns.</bullet_item><para/>
        ///     <bullet_item>Allow Dead Ends Only—U-turns are prohibited at all junctions, except those that have only one connected street feature (a dead end).</bullet_item><para/>
        ///     <bullet_item>Allow Dead Ends and Intersections Only—U-turns are prohibited at pseudojunctions where exactly two adjacent streets meet, but U-turns are permitted at intersections and dead ends. This prevents turning around in the middle of the road where one length of road happens to be digitized as two street features.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The value you provide for this parameter is ignored unless Travel Mode is set to Custom, which is the default value.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是限制还是允许服务区在交叉路口掉头。要了解参数值，请考虑以下术语：交汇点是街段结束并可能连接到一个或多个其他路段的点;伪交汇点是两条街道相互连接的点;交叉点是三条或更多街道连接的点;死胡同是指一个街道段结束而没有连接到另一个街道。</para>
        ///   <bulletList>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///   </bulletList>
        ///   <para>除非将“出行模式”设置为“自定义”（默认值），否则将忽略为此参数提供的值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("UTurn at Junctions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _uturn_policy_value _uturn_policy { get; set; } = _uturn_policy_value._ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY;

        public enum _uturn_policy_value
        {
            /// <summary>
            /// <para>Allow UTurns</para>
            /// <para>Allow UTurns—U-turns are permitted everywhere. Allowing U-turns implies that the vehicle can turn around at any junction and double back on the same street. This is the default value.</para>
            /// <para></para>
            /// </summary>
            [Description("Allow UTurns")]
            [GPEnumValue("ALLOW_UTURNS")]
            _ALLOW_UTURNS,

            /// <summary>
            /// <para>No UTurns</para>
            /// <para>No UTurns—U-turns are prohibited at all junctions: pseudojunctions, intersections, and dead ends. Note, however, that U-turns may be permitted even when this option is chosen. To prevent U-turns at incidents and facilities, set the CurbApproach field value to prohibit U-turns.</para>
            /// <para></para>
            /// </summary>
            [Description("No UTurns")]
            [GPEnumValue("NO_UTURNS")]
            _NO_UTURNS,

            /// <summary>
            /// <para>Allow Dead Ends Only</para>
            /// <para>Allow Dead Ends Only—U-turns are prohibited at all junctions, except those that have only one connected street feature (a dead end).</para>
            /// <para></para>
            /// </summary>
            [Description("Allow Dead Ends Only")]
            [GPEnumValue("ALLOW_DEAD_ENDS_ONLY")]
            _ALLOW_DEAD_ENDS_ONLY,

            /// <summary>
            /// <para>Allow Dead Ends and Intersections Only</para>
            /// <para>Allow Dead Ends and Intersections Only—U-turns are prohibited at pseudojunctions where exactly two adjacent streets meet, but U-turns are permitted at intersections and dead ends. This prevents turning around in the middle of the road where one length of road happens to be digitized as two street features.</para>
            /// <para></para>
            /// </summary>
            [Description("Allow Dead Ends and Intersections Only")]
            [GPEnumValue("ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY")]
            _ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY,

        }

        /// <summary>
        /// <para>Time Window Factor</para>
        /// <para><xdoc>
        ///   <para>Specifies the importance of honoring time windows.</para>
        ///   <bulletList>
        ///     <bullet_item>High—Importance is placed on arriving at stops on time rather than minimizing drive times. For example, organizations that make time-critical deliveries or that are concerned with customer service choose High.</bullet_item><para/>
        ///     <bullet_item>Medium—Importance is balanced between minimizing drive times and arriving within time windows. This is the default value.</bullet_item><para/>
        ///     <bullet_item>Low—Importance is placed on minimizing drive times and rather than arriving at stops on time. You may want to use this setting if you have a growing backlog of service requests. For the purpose of servicing more orders in a day and reducing the backlog, you can choose Low even though customers may be inconvenienced with your late arrivals.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定遵守时间窗口的重要性。</para>
        ///   <bulletList>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Window Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_window_factor_value _time_window_factor { get; set; } = _time_window_factor_value._Medium;

        public enum _time_window_factor_value
        {
            /// <summary>
            /// <para>High</para>
            /// <para>High—Importance is placed on arriving at stops on time rather than minimizing drive times. For example, organizations that make time-critical deliveries or that are concerned with customer service choose High.</para>
            /// <para></para>
            /// </summary>
            [Description("High")]
            [GPEnumValue("High")]
            _High,

            /// <summary>
            /// <para>Medium</para>
            /// <para>Medium—Importance is balanced between minimizing drive times and arriving within time windows. This is the default value.</para>
            /// <para></para>
            /// </summary>
            [Description("Medium")]
            [GPEnumValue("Medium")]
            _Medium,

            /// <summary>
            /// <para>Low</para>
            /// <para>Low—Importance is placed on minimizing drive times and rather than arriving at stops on time. You may want to use this setting if you have a growing backlog of service requests. For the purpose of servicing more orders in a day and reducing the backlog, you can choose Low even though customers may be inconvenienced with your late arrivals.</para>
            /// <para></para>
            /// </summary>
            [Description("Low")]
            [GPEnumValue("Low")]
            _Low,

        }

        /// <summary>
        /// <para>Spatially Cluster Routes</para>
        /// <para><xdoc>
        ///   <para>Specifies whether routes will be spatially clustered.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>CLUSTER (True)—Dynamic seed points are automatically created for all routes, and the orders assigned to an individual route are spatially clustered. Clustering orders tends to keep routes in smaller areas and reduce how often different route lines intersect one another; yet, clustering also tends to increase overall travel times.</bullet_item><para/>
        ///       <bullet_item>NO_CLUSTER (False)—Dynamic seed points aren't created. Choose this option if route zones are specified.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否对路由进行空间聚类。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spatially Cluster Routes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _spatially_cluster_routes { get; set; } = null;


        /// <summary>
        /// <para>Route Zones</para>
        /// <para><xdoc>
        ///   <para>Delineates work territories for given routes. A route zone is a polygon feature used to constrain routes to servicing only those orders that fall within or near the specified area. The following are examples of when route zones may be useful:
        ///   <bulletList>
        ///     <bullet_item>Some of your employees don't have the required permits to perform work in certain states or communities. You can create a hard route zone so they only visit orders in areas where they meet the requirements.  </bullet_item><para/>
        ///     <bullet_item>One of your vehicles breaks down frequently and you want to minimize response time by having it only visit orders that are close to your maintenance garage. You can create a soft or hard route zone to keep the vehicle nearby.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>When specifying the route zones, you must set properties for each—such as its associated route—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>RouteName</para>
        ///   <para>The name of the route to which this zone applies. A route zone can have a maximum of one associated route. This field can't contain null values, and it is a foreign key to the Name field in routes.</para>
        ///   <para>IsHardZone</para>
        ///   <para>A Boolean value indicating a hard or soft route zone. A True value indicates that the route zone is hard; that is, an order that falls outside the route zone polygon can't be assigned to the route. The default value is 1 (True). A False value (0) indicates that such orders can still be assigned, but the cost of servicing the order is weighted by a function based on the Euclidean distance from the route zone. Basically, this means that as the straight-line distance from the soft zone to the order increases, the likelihood of the order being assigned to the route decreases.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>为给定路径划定工作区域。路径区域是一种面要素，用于将路径约束为仅为位于指定区域内或附近的订单提供服务。以下是路由区域可能有用的示例：
        ///   <bulletList>
        ///     <bullet_item>您的一些员工没有在某些州或社区从事工作所需的许可证。您可以创建硬路由区域，以便他们仅访问符合要求的区域的订单。 </bullet_item><para/>
        ///     <bullet_item>您的一辆车经常发生故障，您希望通过让它只访问靠近您的维修车库的订单来最大限度地减少响应时间。您可以创建软路线或硬路线区域以将车辆保持在附近。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>指定路由区域时，必须使用以下属性为每个路由区域设置属性，例如其关联的路由：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>路由名称</para>
        ///   <para>此区域应用到的路由的名称。一个路由区域最多可以有一个关联的路由。此字段不能包含 null 值，它是路由中 Name 字段的外键。</para>
        ///   <para>IsHardZone（硬区）</para>
        ///   <para>一个 Boolean 值，该值指示硬路由或软路由区域。True 值表示路由区域为硬;也就是说，无法将位于路径区域面之外的订单分配给路径。默认值为 1 （True）。False 值 （0） 表示仍可分配此类订单，但服务订单的成本由基于与工艺路线区域的欧几里得距离的函数加权。基本上，这意味着随着从软区到订单的直线距离增加，订单分配给路径的可能性会降低。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Zones")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _route_zones { get; set; } = null;


        /// <summary>
        /// <para>Route Renewals</para>
        /// <para><xdoc>
        ///   <para>Specifies the intermediate depots that routes can visit to reload or unload the cargo they are delivering or picking up. Specifically, a route renewal links a route to a depot. The relationship indicates the route can renew (reload or unload while en route) at the associated depot.</para>
        ///   <para>Route renewals can be used to model scenarios in which a vehicle picks up a full load of deliveries at the starting depot, services the orders, returns to the depot to renew its load of deliveries, and continues servicing more orders. For example, in propane gas delivery, the vehicle may make several deliveries until its tank is nearly or completely depleted, visit a refueling point, and make more deliveries.</para>
        ///   <para>Here are a few rules and options to consider:
        ///   <bulletList>
        ///     <bullet_item>The reload/unload point, or renewal location, can be different from the start or end depot.  </bullet_item><para/>
        ///     <bullet_item>Each route can have one or many predetermined renewal locations.  </bullet_item><para/>
        ///     <bullet_item>A renewal location can be used more than once by a single route.  </bullet_item><para/>
        ///     <bullet_item>In cases where there may be several potential renewal locations for a route, the closest available renewal location is identified by the solver.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>When specifying the route renewals, you must set properties for each—such as the name of the depot where the route renewal can occur—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>DepotName</para>
        ///   <para>The name of the depot where this renewal takes place. This field can't contain a null value and is a foreign key to the Name field in depots.</para>
        ///   <para>RouteName</para>
        ///   <para>The name of the route to which this renewal applies. This field can't contain a null value and is a foreign key to the Name field in routes.</para>
        ///   <para>ServiceTime</para>
        ///   <para>The service time for the renewal. This field can contain a null value; a null value indicates zero service time.</para>
        ///   <para>The unit for this field value is specified by the time_units parameter.</para>
        ///   <para>The time taken to load a vehicle at a renewal depot may depend on the size of the vehicle and how full or empty the vehicle is. However, the service time for a route renewal is a fixed value and does not take into account the actual load. As such, the renewal service time should be given a value corresponding to a full truckload, an average truckload, or another time estimate of your choice.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定路线可以访问的中间仓库，以重新装载或卸载它们正在交付或提取的货物。具体而言，路径更新将路径链接到车辆段。该关系指示工艺路线可以在关联的仓库续订（在途中重新加载或卸载）。</para>
        ///   <para>路径续订可用于对以下场景进行建模：车辆在起始仓库提取满载的交货，为订单提供服务，返回仓库以续订其交货负载，并继续为更多订单提供服务。例如，在丙烷气输送中，车辆可能会进行多次输送，直到其油箱几乎或完全耗尽，访问加油点，并进行更多输送。</para>
        /// <para>以下是一些需要考虑的规则和选项：
        ///   <bulletList>
        ///     <bullet_item>重新装卸点或更新位置可能与起点或终点站不同。</bullet_item><para/>
        ///     <bullet_item>每条路由可以有一个或多个预先确定的续订位置。</bullet_item><para/>
        ///     <bullet_item>一个续订位置可以由单个路由使用多个次。</bullet_item><para/>
        ///     <bullet_item>如果路径可能有多个潜在的续订位置，则求解器会识别最近的可用续订位置。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>指定工艺路线续订时，必须使用以下属性为每个工艺路线续订设置属性，例如可以进行工艺路线更新的仓库的名称：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>仓库名称</para>
        ///   <para>进行此续订的仓库的名称。此字段不能包含 null 值，并且是 depot 中 Name 字段的外键。</para>
        ///   <para>路由名称</para>
        ///   <para>应用此续订的路由的名称。此字段不能包含 null 值，并且是路由中 Name 字段的外键。</para>
        ///   <para>服务时间</para>
        ///   <para>续订的服务时间。此字段可以包含 null 值;空值表示零服务时间。</para>
        ///   <para>此字段值的单位由 time_units 参数指定。</para>
        ///   <para>在更新站装载车辆所需的时间可能取决于车辆的大小以及车辆的满载或空载程度。但是，路线更新的服务时间是固定值，不考虑实际负载。因此，续保服务时间应指定一个与整车装载量、平均卡车装载量或您选择的其他时间估计值相对应的值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Renewals")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _route_renewals { get; set; } = null;


        /// <summary>
        /// <para>Order Pairs</para>
        /// <para><xdoc>
        ///   <para>Pairs pick up and deliver orders so they are serviced by the same route. Specifying order pairs prevents the analysis from assigning only one of the orders to a route: either both orders are assigned to the same route, or neither order is assigned.</para>
        ///   <para>Sometimes it is necessary for the pick up and delivery of orders to be paired. For example, a courier company may need to have a route pick up a high-priority package from one order and deliver it to another without returning to a depot, or sorting station, to minimize delivery time. These related orders can be assigned to the same route with the appropriate sequence using order pairs. Restrictions on how long the package can stay in the vehicle can also be assigned; for example, the package might be a blood sample that must be transported from the doctor's office to the lab within two hours.</para>
        ///   <para>Some situations may require two pairs of orders. For example, suppose you want to transport a senior citizen from her home to the doctor and then back home. The ride from her home to the doctor is one pair of orders with a desired arrival time at the doctor, while the ride from the doctor to her home is another pair with a desired pickup time.</para>
        ///   <para>When specifying the order pairs, you must set properties for each—such as the names of the two orders—using the following attributes:</para>
        ///   <para>ObjectID</para>
        ///   <para>The system-managed ID field.</para>
        ///   <para>FirstOrderName</para>
        ///   <para>The name of the first order of the pair. This field is a foreign key to the Name field in orders.</para>
        ///   <para>SecondOrderName</para>
        ///   <para>The name of the second order of the pair. This field is a foreign key to the Name field in orders.</para>
        ///   <para>The first order in the pair must be a pickup order; that is, the value for its DeliveryQuantities field is null. The second order in the pair must be a delivery order; that is, the value for its PickupQuantities field is null. The quantity picked up at the first order must agree with the quantity delivered at the second order. As a special case, both orders may have zero quantities for scenarios where capacities are not used.</para>
        ///   <para>The order quantities are not loaded or unloaded at depots.</para>
        ///   <para>MaxTransitTime</para>
        ///   <para>The maximum transit time for the pair. The transit time is the duration from the departure time of the first order to the arrival time at the second order. This constraint limits the time-on-vehicle, or ride time, between the two orders. When a vehicle is carrying people or perishable goods, the ride time is typically shorter than that of a vehicle carrying packages or nonperishable goods. This field can contain null values; a null value indicates that there is no constraint on the ride time.</para>
        ///   <para>The unit for this field value is specified by the timeUnits property of the analysis object.</para>
        ///   <para>Excess transit time (measured with respect to the direct travel time between order pairs) can be tracked and weighted by the solver. Because of this, you can direct the VRP solver to take one of three approaches:
        ///   <bulletList>
        ///     <bullet_item>Minimize the overall excess transit time, regardless of the increase in travel cost for the fleet.  </bullet_item><para/>
        ///     <bullet_item>Find a solution that balances overall violation time and travel cost.  </bullet_item><para/>
        ///     <bullet_item>Ignore the overall excess transit time and, instead, minimize the travel cost for the fleet.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>By assigning an importance level for the excess_transit_factor parameter, you are, in effect, choosing one of these three approaches. Regardless of the importance level, the solver will always return an error if the MaxTransitTime value is surpassed.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>成对取货和交付订单，以便他们通过相同的路线提供服务。指定订单对可防止分析仅将其中一个订单分配给工艺路线：要么将两个订单分配给同一工艺路线，要么不分配任何订单。</para>
        ///   <para>有时需要配对订单的取货和送货。例如，快递公司可能需要让路线从一个订单中提取高优先级包裹并将其交付给另一个订单，而无需返回仓库或分拣站，以最大限度地缩短交货时间。可以使用订单对将这些相关订单分配给具有适当顺序的同一路线。还可以指定包裹在车内停留多长时间的限制;例如，包裹可能是必须在两小时内从医生办公室运送到实验室的血液样本。</para>
        ///   <para>在某些情况下，可能需要两对订单。例如，假设您想将一位老年人从家中运送到医生那里，然后再回家。从她家到医生的行程是一对订单，具有期望的到达时间，而从医生到她家的行程是另一对具有期望的接送时间的订单。</para>
        ///   <para>指定订单对时，必须使用以下属性为每个订单设置属性，例如两个订单的名称：</para>
        ///   <para>对象 ID</para>
        ///   <para>系统管理的 ID 字段。</para>
        ///   <para>FirstOrder名称</para>
        ///   <para>对中第一个订单的名称。此字段是订单中 Name 字段的外键。</para>
        ///   <para>SecondOrder名称</para>
        ///   <para>对的第二个订单的名称。此字段是订单中 Name 字段的外键。</para>
        ///   <para>对中的第一个订单必须是取货订单;也就是说，其 DeliveryQuantity 字段的值为 null。对中的第二个订单必须是交货订单;也就是说，其 PickupQuantities 字段的值为 null。在第一个订单中提取的数量必须与在第二个订单中交付的数量一致。作为特殊情况，在不使用容量的情况下，两个订单的数量可能为零。</para>
        ///   <para>订单数量不在仓库装卸。</para>
        ///   <para>最大TransitTime</para>
        ///   <para>货币对的最长传输时间。运输时间是从第一个订单的出发时间到第二个订单的到达时间的持续时间。此约束限制了两个订单之间的车辆上车时间或乘车时间。当车辆运载人员或易腐货物时，行驶时间通常短于运载包裹或不易腐烂货物的车辆。此字段可以包含 null 值;空值表示对乘车时间没有限制。</para>
        ///   <para>此字段值的单位由分析对象的 timeUnits 属性指定。</para>
        /// <para>超额运输时间（相对于订单对之间的直接传输时间进行测量）可以由求解器进行跟踪和加权。因此，您可以指示 VRP 求解器采用以下三种方法之一：
        ///   <bulletList>
        ///     <bullet_item>无论车队的旅行成本如何增加，都可最大限度地减少整体超额运输时间。</bullet_item><para/>
        ///     <bullet_item>找到一个平衡总体违规时间和差旅成本的解决方案。</bullet_item><para/>
        ///     <bullet_item>忽略整体超额运输时间，而是将车队的旅行成本降至最低。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>通过为 excess_transit_factor 参数分配重要性级别，您实际上是在选择这三种方法之一。无论重要性级别如何，如果超过 MaxTransitTime 值，求解器将始终返回错误。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Order Pairs")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _order_pairs { get; set; } = null;


        /// <summary>
        /// <para>Excess Transit Factor</para>
        /// <para><xdoc>
        ///   <para>Specifies the importance of reducing excess transit time of order pairs. Excess transit time is the amount of time exceeding the time required to travel directly between the paired orders. Excess time can be caused by driver breaks or travel to intermediate orders and depots.</para>
        ///   <bulletList>
        ///     <bullet_item>High—Importance is placed on the least excess transit time between paired orders at the expense of increasing the overall travel costs. This setting is typically used when transporting people between paired orders and you want to shorten their ride time. This is characteristic of taxi services.</bullet_item><para/>
        ///     <bullet_item>Medium—Importance is balanced between reducing excess transit time and reducing the overall solution cost. This is the default value.</bullet_item><para/>
        ///     <bullet_item>Low—Importance is placed on minimizing overall solution cost, regardless of excess transit time. This setting is commonly used with courier services. Since couriers transport packages as opposed to people, they don't worry about ride time. Low allows the couriers to service paired orders in the proper sequence and minimize the overall solution cost.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定减少订单对的超额运输时间的重要性。超额运输时间是指超过直接在配对订单之间运输所需时间的时间。多余的时间可能是由于司机休息或前往中间订单和仓库造成的。</para>
        ///   <bulletList>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Excess Transit Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _excess_transit_factor_value _excess_transit_factor { get; set; } = _excess_transit_factor_value._Medium;

        public enum _excess_transit_factor_value
        {
            /// <summary>
            /// <para>High</para>
            /// <para>High—Importance is placed on the least excess transit time between paired orders at the expense of increasing the overall travel costs. This setting is typically used when transporting people between paired orders and you want to shorten their ride time. This is characteristic of taxi services.</para>
            /// <para></para>
            /// </summary>
            [Description("High")]
            [GPEnumValue("High")]
            _High,

            /// <summary>
            /// <para>Medium</para>
            /// <para>Medium—Importance is balanced between reducing excess transit time and reducing the overall solution cost. This is the default value.</para>
            /// <para></para>
            /// </summary>
            [Description("Medium")]
            [GPEnumValue("Medium")]
            _Medium,

            /// <summary>
            /// <para>Low</para>
            /// <para>Low—Importance is placed on minimizing overall solution cost, regardless of excess transit time. This setting is commonly used with courier services. Since couriers transport packages as opposed to people, they don't worry about ride time. Low allows the couriers to service paired orders in the proper sequence and minimize the overall solution cost.</para>
            /// <para></para>
            /// </summary>
            [Description("Low")]
            [GPEnumValue("Low")]
            _Low,

        }

        /// <summary>
        /// <para>Point Barriers</para>
        /// <para><xdoc>
        ///   <para>Use this parameter to specify one or more points that will act as temporary restrictions or represent additional time or distance that may be required to travel on the underlying streets. For example, a point barrier can be used to represent a fallen tree along a street or a time delay spent at a railroad crossing.</para>
        ///   <para>The tool imposes a limit of 250 points that can be added as barriers.</para>
        ///   <para>When specifying point barriers, you can set properties for each, such as its name or barrier type, using the following attributes:</para>
        ///   <para>Name</para>
        ///   <para>The name of the barrier.</para>
        ///   <para>BarrierType</para>
        ///   <para>Specifies whether the point barrier restricts travel completely or adds time or distance when it is crossed. The value for this attribute is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>
        ///         <para>0 (Restriction)—Prohibits travel through the barrier. The barrier is referred to as a restriction point barrier since it acts as a restriction.</para>
        ///       </bullet_item><para/>
        ///       <bullet_item>
        ///         <para>2 (Added Cost)—Traveling through the barrier increases the travel time or distance by the amount specified in the Additional_Time, Additional_Distance, or Additional_Cost field. This barrier type is referred to as an added cost point barrier.</para>
        ///       </bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>Additional_Time</para>
        ///   <para>The added travel time when the barrier is traversed. This field is applicable only for added-cost barriers and when the Measurement Units parameter value is time based.</para>
        ///   <para>This field value must be greater than or equal to zero, and its units must be the same as those specified in the Measurement Units parameter.</para>
        ///   <para>Additional_Distance</para>
        ///   <para>The added distance when the barrier is traversed. This field is applicable only for added-cost barriers and when the Measurement Units parameter value is distance based.</para>
        ///   <para>The field value must be greater than or equal to zero, and its units must be the same as those specified in the Measurement Units parameter.</para>
        ///   <para>Additional_Cost</para>
        ///   <para>The added cost when the barrier is traversed. This field is applicable only for added-cost barriers when the Measurement Units parameter value is neither time based nor distance based.</para>
        ///   <para>FullEdge</para>
        ///   <para>Specifies how the restriction point barriers are applied to the edge elements during the analysis. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (False)—Permits travel on the edge up to the barrier but not through it. This is the default value.</bullet_item><para/>
        ///       <bullet_item>1 (True)—Restricts travel anywhere on the associated edge.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>CurbApproach</para>
        ///   <para>Specifies the direction of traffic that is affected by the barrier. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 (Either side of vehicle)—The barrier affects travel over the edge in both directions.</bullet_item><para/>
        ///       <bullet_item>1 (Right side of vehicle)—Vehicles are only affected if the barrier is on their right side during the approach. Vehicles that traverse the same edge but approach the barrier on their left side are not affected by the barrier.</bullet_item><para/>
        ///       <bullet_item>2 (Left side of vehicle)—Vehicles are only affected if the barrier is on their left side during the approach. Vehicles that traverse the same edge but approach the barrier on their right side are not affected by the barrier.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>Because junctions are points and don't have a side, barriers on junctions affect all vehicles regardless of the curb approach.</para>
        ///   <para>The CurbApproach attribute works with both types of national driving standards: right-hand traffic (United States) and left-hand traffic (United Kingdom). First, consider a facility on the left side of a vehicle. It is always on the left side regardless of whether the vehicle travels on the left or right half of the road. What may change with national driving standards is your decision to approach a facility from one of two directions, that is, so it ends up on the right or left side of the vehicle. For example, to arrive at a facility and not have a lane of traffic between the vehicle and the facility, choose 1 (Right side of vehicle) in the United States and 2 (Left side of vehicle) in the United Kingdom.</para>
        ///   <para>Bearing</para>
        ///   <para>The direction in which a point is moving. The units are degrees and are measured clockwise from true north. This field is used in conjunction with the BearingTol field.</para>
        ///   <para>Bearing data is usually sent automatically from a mobile device equipped with a GPS receiver. Try to include bearing data if you are loading an input location that is moving, such as a pedestrian or a vehicle.</para>
        ///   <para>Using this field tends to prevent adding locations to the wrong edges, which can occur when a vehicle is near an intersection or an overpass, for example. Bearing also helps the tool determine on which side of the street the point is.</para>
        ///   <para>BearingTol</para>
        ///   <para>The bearing tolerance value creates a range of acceptable bearing values when locating moving points on an edge using the Bearing field. If the Bearing field value is within the range of acceptable values that are generated from the bearing tolerance on an edge, the point can be added as a network location there; otherwise, the closest point on the next-nearest edge is evaluated.</para>
        ///   <para>The units are in degrees, and the default value is 30. Values must be greater than 0 and less than 180. A value of 30 means that when Network Analyst attempts to add a network location on an edge, a range of acceptable bearing values is generated 15 degrees to either side of the edge (left and right) and in both digitized directions of the edge.</para>
        ///   <para>NavLatency</para>
        ///   <para>This field is only used in the solve process if the Bearing and BearingTol fields also have values; however, entering a NavLatency field value is optional, even when values are present in Bearing and BearingTol. NavLatency indicates how much cost is expected to elapse from the moment GPS information is sent from a moving vehicle to a server and the moment the processed route is received by the vehicle's navigation device.</para>
        ///   <para>The units of NavLatency are the same as the units of the impedance attribute.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>使用此参数可指定一个或多个点，这些点将充当临时限制，或表示在基础街道上行驶可能需要的额外时间或距离。例如，点障碍可用于表示街道上倒下的树木或在铁路道口花费的时间延迟。</para>
        ///   <para>该工具施加了 250 个点的限制，可以将其添加为障碍。</para>
        ///   <para>指定点障碍时，可以使用以下属性为每个点障碍设置属性，例如其名称或障碍类型：</para>
        ///   <para>名字</para>
        ///   <para>屏障的名称。</para>
        ///   <para>屏障类型</para>
        ///   <para>指定点障碍是完全限制行程，还是在越过点障碍时增加时间或距离。此属性的值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>
        ///         <para>0（限制）- 禁止通过障碍物。该屏障被称为限制点屏障，因为它充当限制。</para>
        ///       </bullet_item><para/>
        ///       <bullet_item>
        ///         <para>2 （附加成本） - 穿越障碍物会增加行驶时间或距离，增加Additional_Time、Additional_Distance或Additional_Cost字段中指定的量。此屏障类型称为附加成本点屏障。</para>
        ///       </bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>Additional_Time</para>
        ///   <para>穿越障碍物时增加的行程时间。此字段仅适用于附加成本障碍和“度量单位”参数值基于时间的情况。</para>
        ///   <para>此字段值必须大于或等于零，并且其单位必须与测量单位参数中指定的单位相同。</para>
        ///   <para>Additional_Distance</para>
        ///   <para>穿越障碍物时增加的距离。此字段仅适用于附加成本障碍和测量单位参数值基于距离的情况。</para>
        ///   <para>字段值必须大于或等于零，并且其单位必须与测量单位参数中指定的单位相同。</para>
        ///   <para>Additional_Cost</para>
        ///   <para>穿越障碍物时增加的成本。此字段仅适用于“度量单位”参数值既不基于时间也不基于距离的附加成本障碍。</para>
        ///   <para>FullEdge的</para>
        ///   <para>指定在分析过程中如何将限制点屏障应用于边图元。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0 （False） - 允许在边缘上行驶至障碍物，但不能穿过障碍物。这是默认值。</bullet_item><para/>
        ///       <bullet_item>1 （True） - 限制关联边上任意位置的行程。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>遏制方法</para>
        ///   <para>指定受障碍物影响的交通方向。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>0（车辆的任一侧）- 障碍物影响两个方向的边缘行驶。</bullet_item><para/>
        ///       <bullet_item>1（车辆右侧）- 仅当障碍物在进近过程中位于其右侧时，车辆才会受到影响。穿越同一边缘但接近左侧障碍物的车辆不受障碍物的影响。</bullet_item><para/>
        ///       <bullet_item>2（车辆左侧）- 仅当障碍物在进近过程中位于其左侧时，车辆才会受到影响。穿越同一边缘但接近右侧障碍物的车辆不受障碍物的影响。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>由于交叉路口是点，没有边，因此无论路缘方法如何，交叉路口上的障碍物都会影响所有车辆。</para>
        ///   <para>CurbApproach 属性适用于两种类型的国家/地区驾驶标准：右侧交通（美国）和左侧交通（英国）。首先，考虑车辆左侧的设施。无论车辆是在道路的左半部分还是右半部分行驶，它始终在左侧。随着国家驾驶标准的变化，您决定从两个方向之一接近设施，也就是说，它最终位于车辆的右侧或左侧。例如，要到达设施点，并且车辆和设施点之间没有车道，请在美国选择 1（车辆右侧），在英国选择 2（车辆左侧）。</para>
        ///   <para>轴承</para>
        ///   <para>点移动的方向。单位是度数，从正北顺时针测量。此字段与 BearingTol 字段结合使用。</para>
        ///   <para>轴承数据通常从配备 GPS 接收器的移动设备自动发送。如果要加载正在移动的输入位置（例如行人或车辆），请尝试包含方位角数据。</para>
        ///   <para>使用此字段可以防止将位置添加到错误的边缘，例如，当车辆靠近交叉路口或立交桥时，可能会发生这种情况。方位角还有助于工具确定点在街道的哪一侧。</para>
        ///   <para>轴承Tol</para>
        ///   <para>当使用“轴承”（Bearing） 场在边上定位移动点时，轴承公差值会创建可接受的轴承值范围。如果“方位角”（Bearing field） 值在边上的方位公差生成的可接受值范围内，则可以将该点添加为该点的网络位置;否则，将计算下一个最近边上的最近点。</para>
        ///   <para>单位以度为单位，默认值为 30。值必须大于 0 且小于 180。值为 30 表示当 Network Analyst 尝试在边上添加网络位置时，将在边的任一侧（左侧和右侧）以及边的两个数字化方向上生成一系列可接受的方位角值。</para>
        ///   <para>NavLatency（导航延迟）</para>
        ///   <para>仅当 Bearing 和 BearingTol 字段也具有值时，此字段才用于求解过程;但是，输入 NavLatency 字段值是可选的，即使值存在于 Bearing 和 BearingTol 中也是如此。NavLatency 表示从 GPS 信息从移动车辆发送到服务器的那一刻到车辆的导航设备接收到处理路线的那一刻，预计会花费多少成本。</para>
        ///   <para>NavLatency 的单位与阻抗属性的单位相同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Point Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _point_barriers { get; set; } = null;


        /// <summary>
        /// <para>Line Barriers</para>
        /// <para><xdoc>
        ///   <para>Use this parameter to specify one or more lines that prohibit travel anywhere the lines intersect the streets. For example, a parade or protest that blocks traffic across several street segments can be modeled with a line barrier. A line barrier can also quickly fence off several roads from being traversed, thereby channeling possible routes away from undesirable parts of the street network.</para>
        ///   <para>The tool imposes a limit on the number of streets you can restrict using the Line Barriers parameter. While there is no limit to the number of lines you can specify as line barriers, the combined number of streets intersected by all the lines cannot exceed 500.</para>
        ///   <para>When specifying the line barriers, you can set name and barrier type properties for each using the following attributes:</para>
        ///   <para>Name</para>
        ///   <para>The name of the barrier.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>使用此参数可指定一条或多条线，这些线禁止这些线与街道相交的任何位置行驶。例如，可以使用线路障碍对阻塞多个街段交通的游行或抗议活动进行建模。线路障碍还可以快速将几条道路围起来，使其无法穿越，从而将可能的路线从街道网络的不良部分引导出去。</para>
        ///   <para>该工具对可以使用线屏障参数限制的街道数量施加限制。虽然可以指定为线障碍的线数没有限制，但所有线相交的街道总数不能超过 500 条。</para>
        ///   <para>指定线屏障时，可以使用以下属性为每个屏障设置名称和屏障类型属性：</para>
        ///   <para>名字</para>
        ///   <para>屏障的名称。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Line Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _line_barriers { get; set; } = null;


        /// <summary>
        /// <para>Polygon Barriers</para>
        /// <para><xdoc>
        ///   <para>Use this parameter to specify polygons that either completely restrict travel or proportionately scale the time or distance required to travel on the streets intersected by the polygons.</para>
        ///   <para>The service imposes a limit on the number of streets you can restrict using the Polygon Barriers parameter. While there is no limit to the number of polygons you can specify as polygon barriers, the combined number of streets intersected by all the polygons cannot exceed 2,000.</para>
        ///   <para>When specifying the polygon barriers, you can set properties for each, such as its name or barrier type, using the following attributes:</para>
        ///   <para>Name</para>
        ///   <para>The name of the barrier.</para>
        ///   <para>BarrierType</para>
        ///   <para>Specifies whether the barrier restricts travel completely or scales the cost (such as time or distance) for traveling through it. The field value is specified as one of the following integers (use the numeric code, not the name in parentheses):</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>
        ///         <para>0 (Restriction)—Prohibits traveling through any part of the barrier. The barrier is referred to as a restriction polygon barrier since it prohibits traveling on streets intersected by the barrier. One use of this type of barrier is to model floods covering areas of the street that make traveling on those streets impossible.</para>
        ///       </bullet_item><para/>
        ///       <bullet_item>
        ///         <para>1 (Scaled Cost)—Scales the cost (such as travel time or distance) required to travel the underlying streets by a factor specified using the ScaledTimeFactor or ScaledDistanceFactor field. If the streets are partially covered by the barrier, the travel time or distance is apportioned and then scaled. For example, a factor of 0.25 means that travel on underlying streets is expected to be four times faster than normal. A factor of 3.0 means it is expected to take three times longer than normal to travel on underlying streets. This barrier type is referred to as a scaled-cost polygon barrier. It can be used to model storms that reduce travel speeds in specific regions.</para>
        ///       </bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>ScaledTimeFactor</para>
        ///   <para>This is the factor by which the travel time of the streets intersected by the barrier is multiplied. The field value must be greater than zero.</para>
        ///   <para>This field is applicable only for scaled-cost barriers and when the Measurement Units parameter is time-based.</para>
        ///   <para>ScaledDistanceFactor</para>
        ///   <para>This is the factor by which the distance of the streets intersected by the barrier is multiplied. The field value must be greater than zero.</para>
        ///   <para>This field is applicable only for scaled-cost barriers and when the Measurement Units parameter is distance-based.</para>
        ///   <para>ScaledCostFactor</para>
        ///   <para>This is the factor by which the cost of the streets intersected by the barrier is multiplied. The field value must be greater than zero.</para>
        ///   <para>This field is applicable only for scaled-cost barriers when the Measurement Units parameter is neither time-based nor distance-based.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>使用此参数可以指定完全限制出行或按比例缩放在与多边形相交的街道上出行所需的时间或距离的多边形。</para>
        ///   <para>该服务对可以使用面障碍参数限制的街道数施加限制。虽然可以指定为面障碍的面的数量没有限制，但所有面相交的街道总数不能超过 2,000。</para>
        ///   <para>指定多边形障碍时，可以使用以下属性为每个面障碍设置属性，例如其名称或障碍类型：</para>
        ///   <para>名字</para>
        ///   <para>屏障的名称。</para>
        ///   <para>屏障类型</para>
        ///   <para>指定障碍是完全限制旅行还是缩放通过障碍物的成本（如时间或距离）。字段值指定为以下整数之一（使用数字代码，而不是括号中的名称）：</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>
        ///         <para>0（限制）- 禁止通过屏障的任何部分。该障碍物称为限制多边形障碍，因为它禁止在与障碍物相交的街道上行驶。这种屏障的一个用途是模拟覆盖街道区域的洪水，这些区域使这些街道无法行驶。</para>
        ///       </bullet_item><para/>
        ///       <bullet_item>
        ///         <para>1 （缩放成本） - 按使用 ScaledTimeFactor 或 ScaledDistanceFactor 字段指定的系数缩放行驶基础街道所需的成本（例如行驶时间或距离）。如果街道部分被障碍物覆盖，则会分摊行驶时间或距离，然后进行缩放。例如，系数 0.25 意味着在底层街道上的行驶速度预计将比正常情况快四倍。3.0 的系数意味着预计在底层街道上行驶所需的时间是正常情况的三倍。此屏障类型称为按比例开本的面屏障。它可用于模拟降低特定区域行进速度的风暴。</para>
        ///       </bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>ScaledTimeFactor</para>
        ///   <para>这是与障碍物相交的街道的行驶时间乘以的系数。字段值必须大于零。</para>
        ///   <para>此字段仅适用于缩放成本障碍和度量单位参数基于时间的情况。</para>
        ///   <para>ScaledDistanceFactor</para>
        ///   <para>这是与障碍物相交的街道距离乘以的系数。字段值必须大于零。</para>
        ///   <para>此字段仅适用于缩放成本障碍和度量单位参数基于距离的情况。</para>
        ///   <para>ScaledCostFactor（缩放成本因子）</para>
        ///   <para>这是与障碍物相交的街道成本成倍增加的因素。字段值必须大于零。</para>
        ///   <para>此字段仅适用于“度量单位”参数既不基于时间也不基于距离的缩放成本障碍。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Polygon Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _polygon_barriers { get; set; } = null;


        /// <summary>
        /// <para>Use Hierarchy</para>
        /// <para><xdoc>
        ///   <para>Specifies whether hierarchy will be used when finding the best routes.
        ///   <bulletList>
        ///     <bullet_item>Checked (True)—Hierarchy will be used when finding routes. When hierarchy is used, the tool identifies higher-order streets, such as freeways, before lower-order streets, such as local roads, and can be used to simulate the driver preference of traveling on freeways instead of local roads even if that means a longer trip. This is especially true when finding routes to faraway locations, because drivers on long-distance trips tend to prefer traveling on freeways, where stops, intersections, and turns can be avoided. Using hierarchy is computationally faster, especially for long-distance routes, as the tool identifies the best route from a relatively smaller subset of streets.  </bullet_item><para/>
        ///     <bullet_item>Unchecked (False)—Hierarchy will not be used when finding routes. If hierarchy is not used, the tool considers all the streets and doesn't necessarily identify higher-order streets when finding the route. This is often used when finding short-distance routes within a city.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The tool automatically reverts to using hierarchy if the straight-line distance between orders, depots, or orders and depots is greater than 50 miles, even if this parameter is unchecked (False).</para>
        ///   <para>This parameter is ignored unless Travel Mode is set to Custom, which is the default value.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在查找最佳路由时是否使用层次结构。
        ///   <bulletList>
        ///     <bullet_item>选中 （True） —查找路径时将使用层次结构。使用层次结构时，该工具会在低阶街道（如本地道路）之前识别高阶街道（如高速公路），并可用于模拟驾驶员在高速公路上行驶而不是在本地道路上行驶的偏好，即使这意味着更长的行程。在寻找前往遥远地点的路线时尤其如此，因为长途旅行的司机往往更喜欢在高速公路上行驶，在那里可以避免停车、十字路口和转弯。使用层次结构的计算速度更快，尤其是对于长途路线，因为该工具从相对较小的街道子集中识别最佳路线。 </bullet_item><para/>
        ///     <bullet_item>未选中 （False） - 查找路径时将不使用层次结构。如果未使用层次结构，则该工具会考虑所有街道，并且在查找路径时不一定会识别高阶街道。这通常用于在城市内寻找短途路线。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>如果订单、仓库或订单与仓库之间的直线距离大于 50 英里，即使未选中此参数 （False），该工具也会自动恢复为使用层次结构。</para>
        ///   <para>除非将“出行模式”设置为“自定义”（默认值），否则将忽略此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use Hierarchy")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _use_hierarchy_in_analysis { get; set; } = null;


        /// <summary>
        /// <para>Restrictions</para>
        /// <para><xdoc>
        ///   <para>The restrictions that will be honored by the tool when finding the best routes.</para>
        ///   <para>A restriction represents a driving preference or requirement. In most cases, restrictions cause roads to be prohibited. For instance, using the Avoid Toll Roads restriction will result in a route that will include toll roads only when it is required to travel on toll roads to visit an incident or a facility. Height Restriction makes it possible to route around any clearances that are lower than the height of your vehicle. If you are carrying corrosive materials on your vehicle, using the Any Hazmat Prohibited restriction prevents hauling the materials along roads where it is marked illegal to do so.</para>
        ///   <para>The values you provide for this parameter are ignored unless Travel Mode is set to Custom.</para>
        ///   <para>
        ///     <para>Some restrictions require an additional value to be specified for their use. This value must be associated with the restriction name and a specific parameter intended to work with the restriction. You can identify such restrictions if their names appear in the AttributeName column in the Attribute Parameter Values parameter. The ParameterValue field should be specified in the Attribute Parameter Values parameter for the restriction to be correctly used when finding traversable roads.</para>
        ///   </para>
        ///   <para>
        ///     <para>Some restrictions are supported only in certain countries; their availability is stated by region in the list below. Of the restrictions that have limited availability within a region, you can determine whether the restriction is available in a particular country by reviewing the table in the Country list section of Network analysis coverage. If a country has a value of Yes in the Logistics Attribute column, the restriction with select availability in the region is supported in that country. If you specify restriction names that are not available in the country where your incidents are located, the service ignores the invalid restrictions. The service also ignores restrictions when the Restriction Usage attribute parameter value is between 0 and 1 (see the Attribute Parameter Value parameter). It prohibits all restrictions when the Restriction Usage parameter value is greater than 0.</para>
        ///   </para>
        ///   <para>The tool supports the following restrictions:</para>
        ///   <bulletList>
        ///     <bullet_item>Any Hazmat Prohibited—The results will not include roads where transporting any kind of hazardous material is prohibited. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Avoid Carpool Roads—The results will avoid roads that are designated exclusively for car pool (high-occupancy) vehicles. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Express Lanes—The results will avoid roads designated as express lanes. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Ferries—The results will avoid ferries. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Gates—The results will avoid roads where there are gates, such as keyed access or guard-controlled entryways.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Limited Access Roads—The results will avoid roads that are limited-access highways.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Private Roads—The results will avoid roads that are not publicly owned and maintained.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Roads Unsuitable for Pedestrians—The results will avoid roads that are unsuitable for pedestrians.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Stairways—The results will avoid all stairways on a pedestrian-suitable route.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Toll Roads—The results will avoid all toll roads for automobiles.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Toll Roads for Trucks—The results will avoid all toll roads for trucks.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Truck Restricted Roads—The results will avoid roads where trucks are not allowed, except when making deliveries.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Avoid Unpaved Roads—The results will avoid roads that are not paved (for example, dirt, gravel, and so on). Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Axle Count Restriction—The results will not include roads where trucks with the specified number of axles are prohibited. The number of axles can be specified using the Number of Axles restriction parameter.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Driving a Bus—The results will not include roads where buses are prohibited. Using this restriction will also ensure that the results will honor one-way streets. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Driving a Taxi—The results will not include roads where taxis are prohibited. Using this restriction will also ensure that the results will honor one-way streets. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Driving a Truck—The results will not include roads where trucks are prohibited. Using this restriction will also ensure that the results will honor one-way streets. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Driving an Automobile—The results will not include roads where automobiles are prohibited. Using this restriction will also ensure that the results will honor one-way streets. Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Driving an Emergency Vehicle—The results will not include roads where emergency vehicles are prohibited. Using this restriction will also ensure that the results will honor one-way streets.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Height Restriction—The results will not include roads where the vehicle height exceeds the maximum allowed height for the road. The vehicle height can be specified using the Vehicle Height (meters) restriction parameter. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Kingpin to Rear Axle Length Restriction—The results will not include roads where the vehicle length exceeds the maximum allowed kingpin to rear axle for all trucks on the road. The length between the vehicle kingpin and the rear axle can be specified using the Vehicle Kingpin to Rear Axle Length (meters) restriction parameter. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Length Restriction—The results will not include roads where the vehicle length exceeds the maximum allowed length for the road. The vehicle length can be specified using the Vehicle Length (meters) restriction parameter. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Preferred for Pedestrians—The results will use preferred routes suitable for pedestrian navigation. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Riding a Motorcycle—The results will not include roads where motorcycles are prohibited. Using this restriction will also ensure that the results will honor one-way streets.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Roads Under Construction Prohibited—The results will not include roads that are under construction.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Semi or Tractor with One or More Trailers Prohibited—The results will not include roads where semis or tractors with one or more trailers are prohibited. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Single Axle Vehicles Prohibited—The results will not include roads where vehicles with single axles are prohibited.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Tandem Axle Vehicles Prohibited—The results will not include roads where vehicles with tandem axles are prohibited.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Through Traffic Prohibited—The results will not include roads where through traffic (nonlocal) is prohibited.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Truck with Trailers Restriction—The results will not include roads where trucks with the specified number of trailers on the truck are prohibited. The number of trailers on the truck can be specified using the Number of Trailers on Truck restriction parameter.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Use Preferred Hazmat Routes—The results will prefer roads that are designated for transporting any kind of hazardous materials. Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Use Preferred Truck Routes—The results will prefer roads that are designated as truck routes, such as the roads that are part of the national network as specified by the National Surface Transportation Assistance Act in the United States, or roads that are designated as truck routes by the state or province, or roads that are preferred by truckers when driving in an area.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Walking—The results will not include roads where pedestrians are prohibited.Availability: All countries</bullet_item><para/>
        ///     <bullet_item>Weight Restriction—The results will not include roads where the vehicle weight exceeds the maximum allowed weight for the road. The vehicle weight can be specified using the Vehicle Weight (kilograms) restriction parameter.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Weight per Axle Restriction—The results will not include roads where the vehicle weight per axle exceeds the maximum allowed weight per axle for the road. The vehicle weight per axle can be specified using the Vehicle Weight per Axle (kilograms) restriction parameter.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///     <bullet_item>Width Restriction—The results will not include roads where the vehicle width exceeds the maximum allowed width for the road. The vehicle width can be specified using the Vehicle Width (meters) restriction parameter.Availability: Select countries in North America and Europe</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>该工具在寻找最佳路线时将遵守的限制。</para>
        ///   <para>限制表示驾驶偏好或要求。在大多数情况下，限制会导致道路被禁止。例如，使用“避开收费公路”限制将导致仅当需要在收费公路上行驶以访问事件或设施时，路线才会包含收费公路。高度限制可以绕过任何低于车辆高度的间隙。如果您在车辆上携带腐蚀性材料，请使用任何危险品禁止限制可防止在标记为非法的道路上拖运材料。</para>
        ///   <para>除非“出行模式”设置为“自定义”，否则将忽略为此参数提供的值。</para>
        ///   <para>
        ///     <para>某些限制需要指定附加值才能使用。此值必须与限制名称和用于该限制的特定参数相关联。如果这些限制的名称显示在“属性参数值”参数的“AttributeName”列中，则可以识别此类限制。应在 Attribute Parameter Values 参数中指定 ParameterValue 字段，以便在查找可穿越道路时正确使用限制。</para>
        ///   </para>
        ///   <para>
        ///     <para>某些限制仅在某些国家/地区受支持;它们的可用性在下面的列表中按地区说明。对于某个区域内可用性有限的限制，您可以通过查看网络分析覆盖范围的国家/地区列表部分中的表格来确定该限制在特定国家/地区是否可用。如果某个国家/地区的“物流属性”列中的值为“是”，则该国家/地区支持在该区域中选择可用性的限制。如果指定的限制名称在事件所在国家/地区不可用，则服务将忽略无效的限制。当限制使用属性参数值介于 0 和 1 之间时，该服务还会忽略限制（请参阅属性参数值参数）。当限制使用参数值大于 0 时，它禁止所有限制。</para>
        ///   </para>
        ///   <para>该工具支持以下限制：</para>
        ///   <bulletList>
        ///     <bullet_item>禁止任何危险品 - 结果将不包括禁止运输任何种类危险材料的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>避免拼车道路 - 结果将避免专门用于拼车（高占用率）车辆的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开快速车道 - 结果将避开指定为快速车道的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避免乘坐渡轮 - 结果将避免乘坐渡轮。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开大门 - 结果将避开有大门的道路，例如带钥匙的入口或警卫控制的入口通道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避免限制通行道路 - 结果将避开限制通行的高速公路道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开私人道路 - 结果将避开非公有和维护的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开不适合行人居住的道路 - 结果将避开不适合行人通行的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避免楼梯 - 结果将避开适合行人的路线上的所有楼梯。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开收费公路 - 结果将避开所有汽车收费公路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开卡车的收费公路 - 结果将避开卡车的所有收费公路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避开卡车限制道路 - 结果将避开不允许卡车通行的道路，但送货时除外。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>避免未铺砌的道路 - 结果将避免未铺砌的道路（例如，泥土、砾石等）。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>轴数限制 - 结果将不包括禁止具有指定轴数的卡车通行的道路。可以使用轴数限制参数指定轴数。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>驾驶公交车 - 结果将不包括禁止公交车行驶的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>驾驶出租车 - 结果将不包括禁止出租车通行的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>驾驶卡车 - 结果将不包括禁止卡车通行的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>驾驶汽车 - 结果将不包括禁止汽车通行的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>驾驶紧急车辆 - 结果将不包括禁止紧急车辆通行的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>高度限制—结果将不包括车辆高度超过道路允许的最大高度的道路。可以使用车辆高度（米）限制参数指定车辆高度。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>主销到后轴长度限制 - 结果将不包括车辆长度超过道路上所有卡车允许的最大主销到后轴的道路。车辆主销和后轴之间的长度可以使用车辆主销到后轴长度（米）限制参数来指定。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>长度限制 - 结果将不包括车辆长度超过道路允许的最大长度的道路。可以使用车辆长度（米）限制参数指定车辆长度。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>行人首选—结果将使用适合行人导航的首选路径。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>骑摩托车 - 结果不包括禁止摩托车通行的道路。使用此限制还将确保结果将遵循单行道。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>禁止在建道路 - 结果将不包括在建道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>禁止使用一辆或多辆拖车的半挂车或拖拉机 - 结果不包括禁止使用一辆或多辆拖车的半挂车或拖拉机的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>禁止单轴车辆 - 结果将不包括禁止单轴车辆通行的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>禁止双轴车辆 - 结果不包括禁止双轴车辆通行的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>禁止直通车 - 结果将不包括禁止直通车（非本地）的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>带拖车限制的卡车—结果将不包括禁止卡车上装有指定数量拖车的卡车通行的道路。可以使用卡车上的拖车数量限制参数指定卡车上的拖车数量。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>使用首选危险品路线 - 结果将优先选择指定用于运输任何类型危险物料的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>使用首选卡车路径 - 结果将优先选择指定为卡车路径的道路，例如美国《国家地面交通援助法》规定的属于国家网络的道路，或由州或省指定为卡车路线的道路，或者卡车司机在某个区域行驶时首选的道路。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>步行 - 结果将不包括禁止行人通行的道路。可用性：所有国家/地区</bullet_item><para/>
        ///     <bullet_item>重量限制 - 结果将不包括车辆重量超过道路允许最大重量的道路。可以使用车辆重量（千克）限制参数指定车辆重量。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>每轴重量限制—结果将不包括车辆每轴重量超过道路每轴允许最大重量的道路。可以使用车辆每轴重量（千克）限制参数指定车辆每轴重量。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///     <bullet_item>宽度限制—结果将不包括车辆宽度超过道路允许的最大宽度的道路。可以使用车辆宽度（米）限制参数指定车辆宽度。可用性：北美和欧洲的部分国家/地区</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Restrictions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _restrictions { get; set; } = null;


        /// <summary>
        /// <para>Attribute Parameter Values</para>
        /// <para><xdoc>
        ///   <para>Use this parameter to specify additional values required by an attribute or restriction, such as to specify whether the restriction prohibits, avoids, or prefers travel on restricted roads. If the restriction is meant to avoid or prefer roads, you can further specify the degree to which they are avoided or preferred using this parameter. For example, you can choose to never use toll roads, avoid them as much as possible, or prefer them.</para>
        ///   <para>The values you provide for this parameter are ignored unless Travel Mode is set to Custom.</para>
        ///   <para>If you specify the Attribute Parameter Values parameter from a feature class, the field names on the feature class must match the fields as follows:
        ///   <bulletList>
        ///     <bullet_item>AttributeName—The name of the restriction.  </bullet_item><para/>
        ///     <bullet_item>ParameterName—The name of the parameter associated with the restriction. A restriction can have one or more ParameterName field values based on its intended use.  </bullet_item><para/>
        ///     <bullet_item>ParameterValue—The value for ParameterName used by the tool when evaluating the restriction.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The Attribute Parameter Values parameter is dependent on the Restrictions parameter. The ParameterValue field is applicable only if the restriction name is specified as the value for the Restrictions parameter.</para>
        ///   <para>In Attribute Parameter Values, each restriction (listed as AttributeName) has a ParameterName field value, Restriction Usage, that specifies whether the restriction prohibits, avoids, or prefers travel on the roads associated with the restriction as well as the degree to which the roads are avoided or preferred. The Restriction Usage ParameterName can be assigned any of the following string values or their equivalent numeric values listed in the parentheses:
        ///   <bulletList>
        ///     <bullet_item>PROHIBITED (-1)—Travel on the roads using the restriction is completely prohibited.  </bullet_item><para/>
        ///     <bullet_item>AVOID_HIGH (5)—It is highly unlikely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///     <bullet_item>AVOID_MEDIUM (2)—It is unlikely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///     <bullet_item>AVOID_LOW (1.3)—It is somewhat unlikely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///     <bullet_item>PREFER_LOW (0.8)—It is somewhat likely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///     <bullet_item>PREFER_MEDIUM (0.5)—It is likely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///     <bullet_item>PREFER_HIGH (0.2)—It is highly likely the tool will include in the route the roads that are associated with the restriction.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>In most cases, you can use the default value, PROHIBITED, as the Restriction Usage value if the restriction is dependent on a vehicle characteristic such as vehicle height. However, in some cases, the Restriction Usage value depends on your routing preferences. For example, the Avoid Toll Roads restriction has the default value of AVOID_MEDIUM for the Restriction Usage attribute. This means that when the restriction is used, the tool will try to route around toll roads when it can. AVOID_MEDIUM also indicates how important it is to avoid toll roads when finding the best route; it has a medium priority. Choosing AVOID_LOW puts lower importance on avoiding tolls; choosing AVOID_HIGH instead gives it a higher importance and thus makes it more acceptable for the service to generate longer routes to avoid tolls. Choosing PROHIBITED entirely disallows travel on toll roads, making it impossible for a route to travel on any portion of a toll road. Keep in mind that avoiding or prohibiting toll roads, and thus avoiding toll payments, is the objective for some. In contrast, others prefer to drive on toll roads, because avoiding traffic is more valuable to them than the money spent on tolls. In the latter case, choose PREFER_LOW, PREFER_MEDIUM, or PREFER_HIGH as the value for Restriction Usage. The higher the preference, the farther the tool will go out of its way to travel on the roads associated with the restriction.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>使用此参数可指定属性或限制所需的其他值，例如指定限制是禁止、避免还是首选在受限道路上行驶。如果限制旨在避开或首选道路，则可以使用此参数进一步指定避开或首选道路的程度。例如，您可以选择从不使用收费公路、尽可能避开收费公路或更喜欢收费公路。</para>
        ///   <para>除非“出行模式”设置为“自定义”，否则将忽略为此参数提供的值。</para>
        /// <para>如果从要素类指定属性参数值参数，则要素类上的字段名称必须与字段匹配，如下所示：
        ///   <bulletList>
        ///     <bullet_item>AttributeName - 限制的名称。</bullet_item><para/>
        ///     <bullet_item>ParameterName - 与限制关联的参数的名称。根据限制的预期用途，限制可以具有一个或多个 ParameterName 字段值。 </bullet_item><para/>
        ///     <bullet_item>ParameterValue - 工具在评估限制时使用的 ParameterName 值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>“属性参数值”参数依赖于“限制”参数。仅当限制名称指定为 Restrictions 参数的值时，ParameterValue 字段才适用。</para>
        /// <para>在“属性参数值”中，每个限制（列为 AttributeName）都有一个 ParameterName 字段值“限制用法”，该值指定限制是禁止、避免还是首选在与限制相关的道路上行驶，以及避免或首选道路的程度。可以为 Restriction Usage ParameterName 分配以下任何字符串值或括号中列出的等效数值：
        ///   <bulletList>
        ///     <bullet_item>禁止 （-1） - 完全禁止在使用该限制的道路上行驶。</bullet_item><para/>
        ///     <bullet_item>AVOID_HIGH （5） - 该工具极不可能在路径中包含与限制关联的道路。</bullet_item><para/>
        ///     <bullet_item>AVOID_MEDIUM （2） - 该工具不太可能在路径中包含与限制关联的道路。</bullet_item><para/>
        ///     <bullet_item>AVOID_LOW （1.3） - 该工具不太可能在路径中包含与限制相关的道路。</bullet_item><para/>
        ///     <bullet_item>PREFER_LOW （0.8） - 该工具很可能会在路径中包含与限制关联的道路。</bullet_item><para/>
        ///     <bullet_item>PREFER_MEDIUM （0.5） - 该工具可能会在路径中包含与限制关联的道路。</bullet_item><para/>
        ///     <bullet_item>PREFER_HIGH （0.2） - 该工具极有可能在路径中包括与限制关联的道路。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>在大多数情况下，如果限制取决于车辆特性（如车辆高度），则可以使用默认值 PROHIBITED 作为限制使用值。但是，在某些情况下，“限制使用”值取决于您的路由首选项。例如，“避免收费公路”限制的默认值为“限制使用情况”属性的默认值 AVOID_MEDIUM。这意味着，当使用限制时，该工具将尽可能尝试绕过收费公路。AVOID_MEDIUM还表明在寻找最佳路线时避开收费公路是多么重要;它具有中等优先级。选择AVOID_LOW对避免通行费的重视程度较低;相反，选择AVOID_HIGH会赋予它更高的重要性，从而使服务更容易接受生成更长的路线以避免通行费。选择“禁止”完全禁止在收费公路上行驶，使路线无法在收费公路的任何部分行驶。请记住，避免或禁止收费公路，从而避免通行费，是一些人的目标。相比之下，其他人更喜欢在收费公路上行驶，因为避开交通对他们来说比花在通行费上的钱更有价值。在后一种情况下，选择 PREFER_LOW、PREFER_MEDIUM 或 PREFER_HIGH 作为 Restriction Usage （限制使用情况） 的值。偏好越高，工具在与限制相关的道路上行驶的距离就越远。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Attribute Parameter Values")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _attribute_parameter_values { get; set; } = null;


        /// <summary>
        /// <para>Populate Route Lines</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the output route line will be generated.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked (True)—The output routes will have the exact shape of the underlying streets.</bullet_item><para/>
        ///       <bullet_item>Unchecked (False)—No shape is generated for the output routes, yet the routes will still contain tabular information about the solution. You can't generate driving directions if route lines aren't created.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>When the Route Shape parameter is set to True Shape, the generalization of the route shape can be further controlled using the appropriate values for the Route Line Simplification Tolerance parameter.</para>
        ///   <para>No matter which value you choose for the Route Shape parameter, the best routes are always determined by minimizing the travel along the streets, never using the straight-line distance. This means that only the route shapes are different, not the underlying streets that are searched when finding the route.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否生成输出路由线。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>当“路径形状”参数设置为“真实形状”时，可以使用“路径线简化容差”参数的相应值进一步控制路径形状的泛化。</para>
        ///   <para>无论为路径形状参数选择哪个值，最佳路径始终通过最小化沿街道的行程来确定，从不使用直线距离。这意味着只有路径形状不同，而在查找路径时搜索的基础街道不同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Route Lines")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_route_lines { get; set; } = null;


        /// <summary>
        /// <para>Route Line Simplification Tolerance</para>
        /// <para><xdoc>
        ///   <para>The amount by which the geometry of the output lines will be simplified for routes and directions.</para>
        ///   <para>The value provided for this parameter is ignored unless Travel Mode is set to Custom, which is the default value.</para>
        ///   <para>The tool ignores this parameter if the populate_route_lines parameter is unchecked (False).</para>
        ///   <para>Simplification maintains critical points on a route, such as turns at intersections, to define the essential shape of the route and removes other points. The simplification distance you specify is the maximum allowable offset that the simplified line can deviate from the original line. Simplifying a line reduces the number of vertices that are part of the route geometry. This improves the tool execution time.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>对于路线和方向，输出线的几何图形将进行简化的量。</para>
        ///   <para>除非“出行模式”设置为“自定义”（默认值），否则将忽略为此参数提供的值。</para>
        ///   <para>如果未选中 populate_route_lines 参数 （False），则该工具将忽略此参数。</para>
        ///   <para>简化保留路径上的关键点（例如交叉口处的转弯），以定义路径的基本形状并删除其他点。指定的简化距离是简化线可以偏离原始线的最大允许偏移量。简化线可减少作为路径几何一部分的折点数。这缩短了工具的执行时间。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Line Simplification Tolerance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _route_line_simplification_tolerance { get; set; } = "10 Meters";


        /// <summary>
        /// <para>Populate Directions</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the tool will generate driving directions for each route.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked (True in Python)—Directions will be generated and configured based on the values of the Directions Language, Directions Style Name, and Directions Distance Units parameters.</bullet_item><para/>
        ///       <bullet_item>Unchecked (False in Python)—Directions will not be generated, and the tool will return an empty Directions layer.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定该工具是否为每条路径生成行驶方向。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>选中（在 Python 中为 True）—将根据方向语言、方向样式名称和方向距离单位参数的值生成和配置方向。</bullet_item><para/>
        ///       <bullet_item>未选中（Python 中为 False）- 不会生成方向，并且工具将返回空的方向图层。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Directions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_directions { get; set; } = null;


        /// <summary>
        /// <para>Directions Language</para>
        /// <para><xdoc>
        ///   <para>The language that will be used when generating travel directions.</para>
        ///   <para>This parameter is used only when the Populate Directions parameter is checked (True in Python).</para>
        ///   <para>The parameter value can be specified using one of the following two- or five-character language codes:
        ///   <bulletList>
        ///     <bullet_item>ar—Arabic  </bullet_item><para/>
        ///     <bullet_item>bs—Bosnian  </bullet_item><para/>
        ///     <bullet_item>ca—Catalan  </bullet_item><para/>
        ///     <bullet_item>cs—Czech  </bullet_item><para/>
        ///     <bullet_item>da—Danish  </bullet_item><para/>
        ///     <bullet_item>de—German  </bullet_item><para/>
        ///     <bullet_item>el—Greek  </bullet_item><para/>
        ///     <bullet_item>en—English  </bullet_item><para/>
        ///     <bullet_item>es—Spanish  </bullet_item><para/>
        ///     <bullet_item>et—Estonian  </bullet_item><para/>
        ///     <bullet_item>fi—Finnish  </bullet_item><para/>
        ///     <bullet_item>fr—French  </bullet_item><para/>
        ///     <bullet_item>he—Hebrew  </bullet_item><para/>
        ///     <bullet_item>hr—Croatian  </bullet_item><para/>
        ///     <bullet_item>hu—Hungarian  </bullet_item><para/>
        ///     <bullet_item>id—Indonesian  </bullet_item><para/>
        ///     <bullet_item>it—Italian  </bullet_item><para/>
        ///     <bullet_item>ja—Japanese  </bullet_item><para/>
        ///     <bullet_item>ko—Korean  </bullet_item><para/>
        ///     <bullet_item>lt—Lithuanian  </bullet_item><para/>
        ///     <bullet_item>lv—Latvian  </bullet_item><para/>
        ///     <bullet_item>nb—Norwegian  </bullet_item><para/>
        ///     <bullet_item>nl—Dutch  </bullet_item><para/>
        ///     <bullet_item>pl—Polish  </bullet_item><para/>
        ///     <bullet_item>pt-BR—Brazilian Portuguese  </bullet_item><para/>
        ///     <bullet_item>pt-PT—European Portuguese  </bullet_item><para/>
        ///     <bullet_item>ro—Romanian  </bullet_item><para/>
        ///     <bullet_item>ru—Russian  </bullet_item><para/>
        ///     <bullet_item>sl—Slovenian  </bullet_item><para/>
        ///     <bullet_item>sr—Serbian  </bullet_item><para/>
        ///     <bullet_item>sv—Swedish  </bullet_item><para/>
        ///     <bullet_item>th—Thai  </bullet_item><para/>
        ///     <bullet_item>tr—Turkish  </bullet_item><para/>
        ///     <bullet_item>uk—Ukrainian  </bullet_item><para/>
        ///     <bullet_item>vi—Vietnamese  </bullet_item><para/>
        ///     <bullet_item>zh-CN—Simplified Chinese  </bullet_item><para/>
        ///     <bullet_item>zh-HK—Traditional Chinese (Hong Kong)  </bullet_item><para/>
        ///     <bullet_item>zh-TW—Traditional Chinese (Taiwan)  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The tool first searches for an exact match for the specified language including any language localization. If an exact match is not found, it tries to match the language family. If a match is still not found, the tool returns the directions using the default language, English. For example, if the directions language is specified as es-MX (Mexican Spanish), the tool will return the directions in Spanish, as it supports the es language code but not es-MX.</para>
        ///   <para>If a language supports localization, such as Brazilian Portuguese (pt-BR) and European Portuguese (pt-PT), specify the language family and the localization. If you only specify the language family, the tool will not match the language family and instead return directions in the default language, English. For example, if the directions language specified is pt, the tool will return the directions in English since it cannot determine whether the directions should be returned in pt-BR or pt-PT.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>生成行进方向时将使用的语言。</para>
        ///   <para>仅当选中 Populate Directions 参数（在 Python 中为 True）时，才使用此参数。</para>
        /// <para>可以使用以下两个字符或五个字符的语言代码之一指定参数值：
        ///   <bulletList>
        ///     <bullet_item>ar—阿拉伯语</bullet_item><para/>
        ///     <bullet_item>bs—波斯尼亚语</bullet_item><para/>
        ///     <bullet_item>ca—加泰罗尼亚语</bullet_item><para/>
        ///     <bullet_item>cs—捷克语</bullet_item><para/>
        ///     <bullet_item>da—丹麦语</bullet_item><para/>
        ///     <bullet_item>de—德语</bullet_item><para/>
        ///     <bullet_item>el—希腊语</bullet_item><para/>
        ///     <bullet_item>en—英语</bullet_item><para/>
        ///     <bullet_item>es—西班牙语</bullet_item><para/>
        ///     <bullet_item>et—爱沙尼亚语</bullet_item><para/>
        ///     <bullet_item>fi—芬兰语</bullet_item><para/>
        ///     <bullet_item>fr—法语</bullet_item><para/>
        ///     <bullet_item>他——希伯来语</bullet_item><para/>
        ///     <bullet_item>hr—克罗地亚语</bullet_item><para/>
        ///     <bullet_item>胡—匈牙利语</bullet_item><para/>
        ///     <bullet_item>id - 印度尼西亚语</bullet_item><para/>
        ///     <bullet_item>it—意大利语</bullet_item><para/>
        ///     <bullet_item>ja—日语</bullet_item><para/>
        ///     <bullet_item>ko—韩语</bullet_item><para/>
        ///     <bullet_item>lt—立陶宛语</bullet_item><para/>
        ///     <bullet_item>lv—拉脱维亚语</bullet_item><para/>
        ///     <bullet_item>nb—挪威语</bullet_item><para/>
        ///     <bullet_item>nl—荷兰语</bullet_item><para/>
        ///     <bullet_item>pl—波兰语</bullet_item><para/>
        ///     <bullet_item>pt-BR—巴西葡萄牙语</bullet_item><para/>
        ///     <bullet_item>pt-PT—欧洲葡萄牙语</bullet_item><para/>
        ///     <bullet_item>ro—罗马尼亚语</bullet_item><para/>
        ///     <bullet_item>ru—俄语</bullet_item><para/>
        ///     <bullet_item>sl—斯洛文尼亚语</bullet_item><para/>
        ///     <bullet_item>sr—塞尔维亚语</bullet_item><para/>
        ///     <bullet_item>sv—瑞典语</bullet_item><para/>
        ///     <bullet_item>th—泰语</bullet_item><para/>
        ///     <bullet_item>tr—土耳其语</bullet_item><para/>
        ///     <bullet_item>uk—乌克兰语</bullet_item><para/>
        ///     <bullet_item>vi—越南语</bullet_item><para/>
        ///     <bullet_item>zh-CN—简体中文</bullet_item><para/>
        ///     <bullet_item>zh-HK—繁体中文（香港）</bullet_item><para/>
        ///     <bullet_item>zh-TW—繁体中文（台湾）</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>该工具首先搜索指定语言的完全匹配项，包括任何语言本地化。如果未找到完全匹配项，它将尝试匹配该语族。如果仍未找到匹配项，该工具将使用默认语言英语返回方向。例如，如果方向语言指定为 es-MX（墨西哥西班牙语），则该工具将返回西班牙语的方向，因为它支持 es 语言代码，但不支持 es-MX。</para>
        ///   <para>如果语言支持本地化，例如巴西葡萄牙语 （pt-BR） 和欧洲葡萄牙语 （pt-PT），请指定语言系列和本地化。如果仅指定语言系列，则该工具将不匹配语言系列，而是以默认语言英语返回方向。例如，如果指定的方向语言为 pt，则该工具将返回英文方向，因为它无法确定方向应以 pt-BR 还是 pt-PT 返回。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Directions Language")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _directions_language { get; set; } = null;


        /// <summary>
        /// <para>Directions Style Name</para>
        /// <para><xdoc>
        ///   <para>Specifies the name of the formatting style for the directions. This parameter is used only when the Populate Directions parameter is checked (True in Python).</para>
        ///   <bulletList>
        ///     <bullet_item>Network Analyst Desktop—Turn-by-turn directions suitable for printing.</bullet_item><para/>
        ///     <bullet_item>Network Analyst Navigation—Turn-by-turn directions designed for an in-vehicle navigation device.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定方向的格式样式的名称。仅当选中 Populate Directions 参数（在 Python 中为 True）时，才使用此参数。</para>
        ///   <bulletList>
        ///     <bullet_item>Network Analyst Desktop - 适合打印的逐向导航。</bullet_item><para/>
        ///     <bullet_item>Network Analyst 导航 - 专为车载导航设备设计的转弯方向。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Directions Style Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _directions_style_name_value _directions_style_name { get; set; } = _directions_style_name_value._NA_Desktop;

        public enum _directions_style_name_value
        {
            /// <summary>
            /// <para>Network Analyst Desktop</para>
            /// <para>Network Analyst Desktop—Turn-by-turn directions suitable for printing.</para>
            /// <para>Network Analyst Desktop - 适合打印的逐向导航。</para>
            /// </summary>
            [Description("Network Analyst Desktop")]
            [GPEnumValue("NA Desktop")]
            _NA_Desktop,

            /// <summary>
            /// <para>Network Analyst Navigation</para>
            /// <para>Network Analyst Navigation—Turn-by-turn directions designed for an in-vehicle navigation device.</para>
            /// <para>Network Analyst 导航 - 专为车载导航设备设计的转弯方向。</para>
            /// </summary>
            [Description("Network Analyst Navigation")]
            [GPEnumValue("NA Navigation")]
            _NA_Navigation,

        }

        /// <summary>
        /// <para>Travel Mode</para>
        /// <para><xdoc>
        ///   <para>The mode of transportation to model in the analysis. Travel modes are managed in ArcGIS Online and can be configured by the administrator of your organization to reflect your organization's workflows. You need to specify the name of a travel mode that is supported by your organization.</para>
        ///   <para>To get a list of supported travel mode names, run the Get Travel Modes tool from the Utilities toolbox under the same GIS Server connection you used to access the tool. The Get Travel Modes tool adds a table, Supported Travel Modes, to the application. Any value in the Travel Mode Name field from the Supported Travel Modes table can be specified as input. You can also specify the value from the Travel Mode Settings field as input. This speeds up tool execution, as the tool does not have to find the settings based on the travel mode name.</para>
        ///   <para>The default value, Custom, allows you to configure your own travel mode using the custom travel mode parameters (UTurn at Junctions, Use Hierarchy, Restrictions, Attribute Parameter Values, and Impedance). The default values of the custom travel mode parameters model traveling by car. You can also choose Custom and set the custom travel mode parameters listed above to model a pedestrian with a fast walking speed or a truck with a given height, weight, and cargo of certain hazardous materials. You can try different settings to get the analysis results you want. Once you have identified the analysis settings, work with your organization's administrator and save these settings as part of a new or existing travel mode so that everyone in your organization can run the analysis with the same settings.</para>
        ///   <para>When you choose Custom, the values you set for the custom travel mode parameters are included in the analysis. Specifying another travel mode, as defined by your organization, causes any values you set for the custom travel mode parameters to be ignored; the tool overrides them with values from your specified travel mode.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在分析中建模的运输方式。出行模式在 ArcGIS Online 中进行管理，可由组织管理员进行配置以反映组织的工作流。您需要指定组织支持的出行模式的名称。</para>
        ///   <para>要获取受支持的出行模式名称列表，请在用于访问该工具的同一 GIS Server 连接下运行实用程序工具箱中的获取出行模式工具。获取出行模式工具会将一个表“支持的出行模式”添加到应用程序中。“支持的出行模式”（Supported Travel Modes） 表格中“出行模式名称”（Travel Mode Name） 字段中的任何值都可以指定为输入。您还可以将“出行模式设置”字段中的值指定为输入。这加快了工具的执行速度，因为工具不必根据出行模式名称查找设置。</para>
        ///   <para>默认值 Custom 允许您使用自定义出行模式参数（“交汇点处的 UTurn”、“使用层次结构”、“限制”、“属性参数值”和“阻抗”）配置自己的出行模式。自定义出行模式参数模型的默认值为汽车出行。您还可以选择自定义并设置上面列出的自定义出行模式参数，以对步行速度较快的行人或具有给定高度、重量和某些危险材料货物的卡车进行建模。您可以尝试不同的设置来获得所需的分析结果。确定分析设置后，请与组织的管理员合作，并将这些设置另存为新的或现有的出行模式的一部分，以便组织中的每个人都可以使用相同的设置运行分析。</para>
        ///   <para>选择“自定义”（Custom） 时，为自定义出行模式参数设置的值将包含在分析中。指定组织定义的其他出行模式会导致忽略您为自定义出行模式参数设置的任何值;该工具将使用指定出行模式中的值覆盖它们。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _travel_mode { get; set; } = null;


        /// <summary>
        /// <para>Impedance</para>
        /// <para><xdoc>
        ///   <para>Specifies the impedance, which is a value that represents the effort or cost of traveling along road segments or on other parts of the transportation network.</para>
        ///   <para>Travel time is an impedance: a car may take 1 minute to travel a mile along an empty road. Travel times can vary by travel mode—a pedestrian may take more than 20 minutes to walk the same mile, so it is important to choose the right impedance for the travel mode you are modeling.</para>
        ///   <para>Travel distance can also be an impedance; the length of a road in kilometers can be thought of as impedance. Travel distance in this sense is the same for all modes—a kilometer for a pedestrian is also a kilometer for a car. (What may change is the pathways on which the different modes are allowed to travel, which affects distance between points, and this is modeled by travel mode settings.)</para>
        ///   <para>The value you provide for this parameter is ignored unless Travel Mode is set to Custom, which is the default value.</para>
        ///   <bulletList>
        ///     <bullet_item>Travel Time—Historical and live traffic data is used. This option is good for modeling the time it takes automobiles to travel along roads at a specific time of day using live traffic speed data where available. When using TravelTime, you can optionally set the TravelTime::Vehicle Maximum Speed (km/h) attribute parameter to specify the physical limitation of the speed the vehicle is capable of traveling.</bullet_item><para/>
        ///     <bullet_item>Minutes—Live traffic data is not used, but historical average speeds for automobiles data is used.</bullet_item><para/>
        ///     <bullet_item>Truck Travel Time—Historical and live traffic data is used, but the speed is capped at the posted truck speed limit. This is good for modeling the time it takes for the trucks to travel along roads at a specific time. When using TruckTravelTime, you can optionally set the TruckTravelTime::Vehicle Maximum Speed (km/h) attribute parameter to specify the physical limitation of the speed the truck is capable of traveling.</bullet_item><para/>
        ///     <bullet_item>Truck Minutes—Live traffic data is not used, but the smaller of the historical average speeds for automobiles and the posted speed limits for trucks are used.</bullet_item><para/>
        ///     <bullet_item>Walk Time—The default is a speed of 5 km/hr on all roads and paths, but this can be configured through the WalkTime::Walking Speed (km/h) attribute parameter.</bullet_item><para/>
        ///     <bullet_item>Time At One Kilometer Per Hour—The default is a speed of 1 km/hr on all roads and paths. The speed cannot be changed using any attribute parameter.</bullet_item><para/>
        ///     <bullet_item>Drive Time—Models travel times for a car. These travel times are dynamic and fluctuate according to traffic flows in areas where traffic data is available. This is the default value.</bullet_item><para/>
        ///     <bullet_item>Truck Time—Models travel times for a truck. These travel times are static for each road and don't fluctuate with traffic.</bullet_item><para/>
        ///     <bullet_item>Walk Time—Models travel times for a pedestrian.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>If you choose a time-based impedance, such as TravelTime, TruckTravelTime, Minutes, TruckMinutes, or WalkTime, the Break Units parameter must be set to a time-based value; if you choose a distance-based impedance such as Miles or Kilometers, Break Units must be distance-based.</para>
        ///   <para>Drive Time, Truck Time, Walk Time, and Travel Distance impedance values are no longer supported and will be removed in a future release. If you use one of these values, the tool uses the value of the Time Impedance parameter for time-based values and the Distance Impedance parameter for distance-based values.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定阻抗，该值表示沿路段或运输网络其他部分行驶的工作量或成本。</para>
        ///   <para>行驶时间是一种阻抗：一辆汽车在空旷的道路上行驶一英里可能需要 1 分钟。行驶时间可能因出行模式而异 - 行人走完同一英里可能需要 20 多分钟，因此为正在建模的出行模式选择正确的阻抗非常重要。</para>
        ///   <para>行程距离也可以是阻抗;以公里为单位的道路长度可以被认为是阻抗。从这个意义上说，所有模式的行驶距离都是相同的——行人的一公里也是汽车的一公里。（可能会改变的是允许不同模式行进的路径，这会影响点之间的距离，这是通过行进模式设置建模的。</para>
        ///   <para>除非将“出行模式”设置为“自定义”（默认值），否则将忽略为此参数提供的值。</para>
        ///   <bulletList>
        ///     <bullet_item>行驶时间 - 使用历史和实时交通数据。此选项适用于使用实时交通速度数据（如果可用）对汽车在一天中的特定时间沿道路行驶所需的时间进行建模。使用 TravelTime 时，您可以选择设置 TravelTime：：Vehicle Maximum Speed （km/h） 属性参数，以指定车辆能够行驶的速度的物理限制。</bullet_item><para/>
        ///     <bullet_item>分钟 - 不使用实时交通数据，但使用汽车数据的历史平均速度。</bullet_item><para/>
        ///     <bullet_item>卡车行驶时间 - 使用历史和实时交通数据，但速度上限为公布的卡车速度限制。这有利于对卡车在特定时间沿道路行驶所需的时间进行建模。使用 TruckTravelTime 时，您可以选择设置 TruckTravelTime：：Vehicle Maximum Speed （km/h） 属性参数，以指定卡车能够行驶的速度的物理限制。</bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item>步行时间 - 所有道路和路径上的默认速度为 5 公里/小时，但可以通过步行时间：：步行速度（公里/小时）属性参数进行配置。</bullet_item><para/>
        ///     <bullet_item>一小时时间 - 所有道路和路径上的默认速度为 1 公里/小时。不能使用任何属性参数更改速度。</bullet_item><para/>
        ///     <bullet_item>行驶时间 - 对汽车的行驶时间进行建模。这些旅行时间是动态的，并根据交通数据可用地区的交通流量而波动。这是默认值。</bullet_item><para/>
        ///     <bullet_item>卡车时间 - 对卡车的行驶时间进行建模。这些行驶时间对于每条道路都是静态的，不会随着交通流量而波动。</bullet_item><para/>
        ///     <bullet_item>步行时间 - 对行人的行进时间进行建模。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果选择基于时间的阻抗，例如 TravelTime、TruckTravelTime、Minutes、TruckMinutes 或 WalkTime，则必须将 Break Units 参数设置为基于时间的值;如果选择基于距离的阻抗（如英里或公里），则断点单位必须基于距离。</para>
        ///   <para>“行驶时间”、“卡车时间”、“步行时间”和“行驶距离阻抗”值不再受支持，并将在将来的版本中删除。如果使用其中一个值，则该工具将使用时间阻抗参数的值来表示基于时间的值，将距离阻抗参数的值用于基于距离的值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _impedance_value _impedance { get; set; } = _impedance_value._Drive_Time;

        public enum _impedance_value
        {
            /// <summary>
            /// <para>Drive Time</para>
            /// <para>Drive Time—Models travel times for a car. These travel times are dynamic and fluctuate according to traffic flows in areas where traffic data is available. This is the default value.</para>
            /// <para>行驶时间 - 对汽车的行驶时间进行建模。这些旅行时间是动态的，并根据交通数据可用地区的交通流量而波动。这是默认值。</para>
            /// </summary>
            [Description("Drive Time")]
            [GPEnumValue("Drive Time")]
            _Drive_Time,

            /// <summary>
            /// <para>Truck Time</para>
            /// <para>Truck Time—Models travel times for a truck. These travel times are static for each road and don't fluctuate with traffic.</para>
            /// <para>卡车时间 - 对卡车的行驶时间进行建模。这些行驶时间对于每条道路都是静态的，不会随着交通流量而波动。</para>
            /// </summary>
            [Description("Truck Time")]
            [GPEnumValue("Truck Time")]
            _Truck_Time,

            /// <summary>
            /// <para>Walk Time</para>
            /// <para>Walk Time—The default is a speed of 5 km/hr on all roads and paths, but this can be configured through the WalkTime::Walking Speed (km/h) attribute parameter.</para>
            /// <para>步行时间 - 所有道路和路径上的默认速度为 5 公里/小时，但可以通过步行时间：：步行速度（公里/小时）属性参数进行配置。</para>
            /// </summary>
            [Description("Walk Time")]
            [GPEnumValue("Walk Time")]
            _Walk_Time,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—Live traffic data is not used, but historical average speeds for automobiles data is used.</para>
            /// <para>分钟 - 不使用实时交通数据，但使用汽车数据的历史平均速度。</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>Travel Time</para>
            /// <para>Travel Time—Historical and live traffic data is used. This option is good for modeling the time it takes automobiles to travel along roads at a specific time of day using live traffic speed data where available. When using TravelTime, you can optionally set the TravelTime::Vehicle Maximum Speed (km/h) attribute parameter to specify the physical limitation of the speed the vehicle is capable of traveling.</para>
            /// <para>行驶时间 - 使用历史和实时交通数据。此选项适用于使用实时交通速度数据（如果可用）对汽车在一天中的特定时间沿道路行驶所需的时间进行建模。使用 TravelTime 时，您可以选择设置 TravelTime：：Vehicle Maximum Speed （km/h） 属性参数，以指定车辆能够行驶的速度的物理限制。</para>
            /// </summary>
            [Description("Travel Time")]
            [GPEnumValue("TravelTime")]
            _TravelTime,

            /// <summary>
            /// <para>Time At One Kilometer Per Hour</para>
            /// <para>Time At One Kilometer Per Hour—The default is a speed of 1 km/hr on all roads and paths. The speed cannot be changed using any attribute parameter.</para>
            /// <para>一小时时间 - 所有道路和路径上的默认速度为 1 公里/小时。不能使用任何属性参数更改速度。</para>
            /// </summary>
            [Description("Time At One Kilometer Per Hour")]
            [GPEnumValue("TimeAt1KPH")]
            _TimeAt1KPH,

            /// <summary>
            /// <para>Walk Time</para>
            /// <para>Walk Time—The default is a speed of 5 km/hr on all roads and paths, but this can be configured through the WalkTime::Walking Speed (km/h) attribute parameter.</para>
            /// <para>步行时间 - 所有道路和路径上的默认速度为 5 公里/小时，但可以通过步行时间：：步行速度（公里/小时）属性参数进行配置。</para>
            /// </summary>
            [Description("Walk Time")]
            [GPEnumValue("WalkTime")]
            _WalkTime,

            /// <summary>
            /// <para>Truck Minutes</para>
            /// <para>Truck Minutes—Live traffic data is not used, but the smaller of the historical average speeds for automobiles and the posted speed limits for trucks are used.</para>
            /// <para></para>
            /// </summary>
            [Description("Truck Minutes")]
            [GPEnumValue("TruckMinutes")]
            _TruckMinutes,

            /// <summary>
            /// <para>Truck Travel Time</para>
            /// <para>Truck Travel Time—Historical and live traffic data is used, but the speed is capped at the posted truck speed limit. This is good for modeling the time it takes for the trucks to travel along roads at a specific time. When using TruckTravelTime, you can optionally set the TruckTravelTime::Vehicle Maximum Speed (km/h) attribute parameter to specify the physical limitation of the speed the truck is capable of traveling.</para>
            /// <para>卡车行驶时间 - 使用历史和实时交通数据，但速度上限为公布的卡车速度限制。这有利于对卡车在特定时间沿道路行驶所需的时间进行建模。使用 TruckTravelTime 时，您可以选择设置 TruckTravelTime：：Vehicle Maximum Speed （km/h） 属性参数，以指定卡车能够行驶的速度的物理限制。</para>
            /// </summary>
            [Description("Truck Travel Time")]
            [GPEnumValue("TruckTravelTime")]
            _TruckTravelTime,

        }

        /// <summary>
        /// <para>Time Zone Usage for Time Fields</para>
        /// <para><xdoc>
        ///   <para>Specifies the time zone for the input date-time fields supported by the tool. This parameter specifies the time zone for the following fields: TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime, and OutboundDepartTime on orders. TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2 on depots. EarliestStartTime and LatestStartTime on routes. TimeWindowStart and TimeWindowEnd on breaks.</para>
        ///   <bulletList>
        ///     <bullet_item>GEO_LOCAL—The date-time values associated with the orders or depots are in the time zone in which the orders and depots are located. For routes, the date-time values are based on the time zone in which the starting depot for the route is located. If a route does not have a starting depot, all orders and depots across all the routes must be in a single time zone. For breaks, the date-time values are based on the time zone of the routes. For example, if your depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 8:00 a.m. and 5:00 p.m. eastern standard time.</bullet_item><para/>
        ///     <bullet_item>UTC—The date-time values associated with the orders or depots are in coordinated universal time (UTC) and are not based on the time zone in which the orders or depots are located. For example, if your depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 12:00 p.m. and 9:00 p.m. eastern standard time, assuming eastern standard time is obeying daylight saving time.</bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        ///     <bullet_item>GEO_LOCAL—GEO_LOCAL</bullet_item><para/>
        ///     <bullet_item>UTC—UTC</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Specifying the date-time values in UTC is useful if you do not know the time zone in which the orders or depots are located or if you have orders and depots in multiple time zones, and you want all the date-time values to start simultaneously. The UTC option is applicable only when your network dataset defines a time zone attribute. Otherwise, all the date-time values are always treated as GEO_LOCAL.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定工具支持的输入日期-时间字段的时区。此参数指定订单上以下字段的时区：TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2、TimeWindowEnd2、InboundArriveTime 和 OutboundDepartTime。仓库上的 TimeWindowStart1、TimeWindowEnd1、TimeWindowStart2 和 TimeWindowEnd2。路由上的 EarliestStartTime 和 LatestStartTime。TimeWindowStart 和 TimeWindowEnd 休息。</para>
        ///   <bulletList>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///   </bulletList>
        ///   <bulletList>
        ///     <bullet_item></bullet_item><para/>
        ///     <bullet_item></bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果您不知道订单或仓库所在的时区，或者您的订单和仓库位于多个时区，并且希望所有日期时间值同时启动，则以 UTC 指定日期时间值非常有用。仅当网络数据集定义时区属性时，UTC 选项才适用。否则，所有日期时间值始终被视为GEO_LOCAL值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone Usage for Time Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_usage_for_time_fields_value _time_zone_usage_for_time_fields { get; set; } = _time_zone_usage_for_time_fields_value._GEO_LOCAL;

        public enum _time_zone_usage_for_time_fields_value
        {
            /// <summary>
            /// <para>GEO_LOCAL</para>
            /// <para>GEO_LOCAL—The date-time values associated with the orders or depots are in the time zone in which the orders and depots are located. For routes, the date-time values are based on the time zone in which the starting depot for the route is located. If a route does not have a starting depot, all orders and depots across all the routes must be in a single time zone. For breaks, the date-time values are based on the time zone of the routes. For example, if your depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 8:00 a.m. and 5:00 p.m. eastern standard time.</para>
            /// <para></para>
            /// </summary>
            [Description("GEO_LOCAL")]
            [GPEnumValue("GEO_LOCAL")]
            _GEO_LOCAL,

            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The date-time values associated with the orders or depots are in coordinated universal time (UTC) and are not based on the time zone in which the orders or depots are located. For example, if your depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 12:00 p.m. and 9:00 p.m. eastern standard time, assuming eastern standard time is obeying daylight saving time.</para>
            /// <para></para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

        }

        /// <summary>
        /// <para>Save Output Network Analysis Layer</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the analysis settings will be saved as a network analysis layer file. You cannot directly work with this file even when you open the file in an ArcGIS Desktop application such as ArcMap. It is meant to be sent to Esri Technical Support to diagnose the quality of results returned from the tool.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked (True)—The network analysis layer file will be saved. The file is downloaded in a temporary directory on your machine. In ArcGIS Pro, the location of the downloaded file can be determined by viewing the value for the Output Network Analysis Layer parameter in the entry corresponding to the tool execution in the geoprocessing history of your project. In ArcMap, the location of the file can be determined by accessing the Copy Location option in the shortcut menu on the Output Network Analysis Layer parameter in the entry corresponding to the tool execution in the Geoprocessing Results window.</bullet_item><para/>
        ///       <bullet_item>Unchecked (False)—The network analysis layer file will not be saved. This is the default.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否将分析设置另存为网络分析图层文件。即使在 ArcGIS Desktop 应用程序（例如 ArcMap）中打开文件，也无法直接使用此文件。它旨在发送给 Esri 技术支持，以诊断从该工具返回的结果的质量。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item></bullet_item><para/>
        ///       <bullet_item></bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Save Output Network Analysis Layer")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _save_output_layer { get; set; } = null;


        /// <summary>
        /// <para>Overrides</para>
        /// <para><xdoc>
        ///   <para>Additional settings that can influence the behavior of the solver when finding solutions for the network analysis problems.</para>
        ///   <para>The value for this parameter must be specified in JavaScript Object Notation (JSON). For example, a valid value is of the following form: {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. The override setting name is always enclosed in double quotation marks. The values can be a number, Boolean, or string.</para>
        ///   <para>The default value for this parameter is no value, which indicates not to override any solver settings.</para>
        ///   <para>Overrides are advanced settings that should be used only after careful analysis of the results obtained before and after applying the settings. For a list of supported override settings for each solver and their acceptable values, contact Esri Technical Support.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在寻找网络分析问题的解决方案时可能影响求解器行为的其他设置。</para>
        ///   <para>此参数的值必须在 JavaScript 对象表示法 （JSON） 中指定。例如，有效值的格式如下：{“overrideSetting1” ： “value1”， “overrideSetting2” ： “value2”}。替代设置名称始终用双引号括起来。这些值可以是数字、布尔值或字符串。</para>
        ///   <para>此参数的默认值为 no value，表示不覆盖任何求解器设置。</para>
        ///   <para>替代是高级设置，只有在仔细分析应用设置之前和之后获得的结果后，才应使用。有关每个求解器支持的覆盖设置及其可接受值的列表，请联系 Esri 技术支持。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Overrides")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _overrides { get; set; } = null;


        /// <summary>
        /// <para>Save Route Data</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the output includes a .zip file that contains a file geodatabase with the inputs and outputs of the analysis in a format that can be used to share route layers with ArcGIS Online or Portal for ArcGIS.</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>Checked (True)—The route data will be saved as a .zip file. The file is downloaded to a temporary directory on your machine. In ArcGIS Pro, the location of the downloaded file can be determined by viewing the value for the Output Route Data parameter in the entry corresponding to the tool execution in the geoprocessing history of your project. In ArcMap, the location of the file can be determined by accessing the Copy Location option in the shortcut menu on the Output Route Data parameter in the entry corresponding to the tool execution in the Geoprocessing Results window.</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>Unchecked (False)—The route data will not be saved. This is the default.</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输出是否包含包含文件地理数据库的 .zip 文件，该文件地理数据库包含分析的输入和输出，其格式可用于与 ArcGIS Online 或 Portal for ArcGIS 共享路径图层。</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>选中 （True） - 路径数据将另存为 .zip 文件。该文件将下载到计算机上的临时目录中。在 ArcGIS Pro 中，可以通过查看工程地理处理历史记录中与工具执行相对应的条目中的输出路径数据参数值来确定下载文件的位置。在 ArcMap 中，可以通过访问与地理处理结果窗口中的工具执行相对应的条目中输出路径数据参数的快捷菜单中的复制位置选项来确定文件的位置。</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>未选中 （False） - 不保存路径数据。这是默认设置。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Save Route Data")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _save_route_data { get; set; } = null;


        /// <summary>
        /// <para>Time Impedance</para>
        /// <para>If the impedance for the travel mode, as specified using the Impedance parameter, is time based, the values for the Time Impedance and Impedance parameters must be identical. Otherwise, the service will return an error.</para>
        /// <para>如果使用阻抗参数指定的行驶模式的阻抗是基于时间的，则时间阻抗和阻抗参数的值必须相同。否则，服务将返回错误。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_impedance_value _time_impedance { get; set; } = _time_impedance_value._TravelTime;

        public enum _time_impedance_value
        {
            /// <summary>
            /// <para>Minutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>Travel Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Travel Time")]
            [GPEnumValue("TravelTime")]
            _TravelTime,

            /// <summary>
            /// <para>Time At One Kilometer Per Hour</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Time At One Kilometer Per Hour")]
            [GPEnumValue("TimeAt1KPH")]
            _TimeAt1KPH,

            /// <summary>
            /// <para>Walk Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Walk Time")]
            [GPEnumValue("WalkTime")]
            _WalkTime,

            /// <summary>
            /// <para>Truck Minutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Truck Minutes")]
            [GPEnumValue("TruckMinutes")]
            _TruckMinutes,

            /// <summary>
            /// <para>Truck Travel Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Truck Travel Time")]
            [GPEnumValue("TruckTravelTime")]
            _TruckTravelTime,

        }

        /// <summary>
        /// <para>Distance Impedance</para>
        /// <para>If the impedance for the travel mode, as specified using the Impedance parameter, is distance based, the values for the Distance Impedance and Impedance parameters must be identical. Otherwise, the service will return an error.</para>
        /// <para>如果使用阻抗参数指定的行驶模式的阻抗是基于距离的，则距离阻抗和阻抗参数的值必须相同。否则，服务将返回错误。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_impedance_value _distance_impedance { get; set; } = _distance_impedance_value._Kilometers;

        public enum _distance_impedance_value
        {
            /// <summary>
            /// <para>Miles</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("Miles")]
            _Miles,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("Kilometers")]
            _Kilometers,

        }

        /// <summary>
        /// <para>Populate Stop Shapes</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the tool will create the shapes for the output assigned and unassigned stops.</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>Checked (True)—The output assigned and unassigned stops are created as point features. This can be useful to visualize which stops are assigned to routes and which stops could not be assigned to any route.</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>Unchecked (False)—The output assigned and unassigned stops are created as tables and will not have shapes. This is the default. Use this option only if you don't need your application to visualize the output stops and can work with only the attributes of the stops.</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定工具是否为输出指定和未指定停靠点创建形状。</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>选中 （True） - 输入指定和未指定停靠点将创建为点要素。这对于可视化哪些停靠点分配给路径以及哪些停靠点无法分配给任何路径非常有用。</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>未选中 （False） - 输出指定和未指定停靠点将创建为表格，并且不会具有形状。这是默认设置。仅当应用程序不需要可视化输出停靠点并且只能使用停靠点的属性时，才使用此选项。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Stop Shapes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_stop_shapes { get; set; } = null;


        /// <summary>
        /// <para>Output Format</para>
        /// <para><xdoc>
        ///   <para>Specifies the format in which the output features will be created.</para>
        ///   <bulletList>
        ///     <bullet_item>Feature Set—The output features will be returned as feature classes and tables. This is the default.</bullet_item><para/>
        ///     <bullet_item>JSON File—The output features will be returned as a compressed file containing the JSON representation of the outputs. When this option is specified, the output is a single file (with a .zip extension) that contains one or more JSON files (with a .json extension) for each of the outputs created by the service.</bullet_item><para/>
        ///     <bullet_item>GeoJSON File—The output features will be returned as a compressed file containing the GeoJSON representation of the outputs. When this option is specified, the output is a single file (with a .zip extension) that contains one or more GeoJSON files (with a .geojson extension) for each of the outputs created by the service.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>When a file-based output format, such as JSON File or GeoJSON File, is specified, no outputs will be added to the display because the application, such as ArcMap or ArcGIS Pro, cannot draw the contents of the result file. Instead, the result file is downloaded to a temporary directory on your machine. In ArcGIS Pro, the location of the downloaded file can be determined by viewing the value for the Output Result File parameter in the entry corresponding to the tool execution in the geoprocessing history of your project. In ArcMap, the location of the file can be determined by accessing the Copy Location option in the shortcut menu on the Output Result File parameter in the entry corresponding to the tool execution in the Geoprocessing Results window.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于创建输出要素的格式。</para>
        ///   <bulletList>
        ///     <bullet_item>要素集 - 输出要素将作为要素类和表返回。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>JSON 文件—输出要素将作为包含输出的 JSON 表示的压缩文件返回。指定此选项时，输出是一个文件（扩展名为 .zip），其中包含一个或多个 JSON 文件（扩展名为 .json），用于服务创建的每个输出。</bullet_item><para/>
        ///     <bullet_item>GeoJSON 文件 - 输出要素将作为包含输出的 GeoJSON 表示的压缩文件返回。指定此选项后，输出为单个文件（扩展名为 .zip），其中包含一个或多个 GeoJSON 文件（扩展名为 .geojson），用于服务创建的每个输出。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果指定了基于文件的输出格式（例如 JSON 文件或 GeoJSON 文件），则不会将任何输出添加到显示中，因为应用程序（例如 ArcMap 或 ArcGIS Pro）无法绘制结果文件的内容。相反，结果文件将下载到计算机上的临时目录中。在 ArcGIS Pro 中，可以通过查看工程地理处理历史记录中与工具执行相对应的条目中的输出结果文件参数值来确定下载文件的位置。在 ArcMap 中，可以通过访问与地理处理结果窗口中的工具执行相对应的条目中输出结果文件参数快捷菜单中的复制位置选项来确定文件的位置。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Format")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _output_format_value _output_format { get; set; } = _output_format_value._Feature_Set;

        public enum _output_format_value
        {
            /// <summary>
            /// <para>Feature Set</para>
            /// <para>Feature Set—The output features will be returned as feature classes and tables. This is the default.</para>
            /// <para>要素集 - 输出要素将作为要素类和表返回。这是默认设置。</para>
            /// </summary>
            [Description("Feature Set")]
            [GPEnumValue("Feature Set")]
            _Feature_Set,

            /// <summary>
            /// <para>JSON File</para>
            /// <para>JSON File—The output features will be returned as a compressed file containing the JSON representation of the outputs. When this option is specified, the output is a single file (with a .zip extension) that contains one or more JSON files (with a .json extension) for each of the outputs created by the service.</para>
            /// <para>JSON 文件—输出要素将作为包含输出的 JSON 表示的压缩文件返回。指定此选项时，输出是一个文件（扩展名为 .zip），其中包含一个或多个 JSON 文件（扩展名为 .json），用于服务创建的每个输出。</para>
            /// </summary>
            [Description("JSON File")]
            [GPEnumValue("JSON File")]
            _JSON_File,

            /// <summary>
            /// <para>GeoJSON File</para>
            /// <para>GeoJSON File—The output features will be returned as a compressed file containing the GeoJSON representation of the outputs. When this option is specified, the output is a single file (with a .zip extension) that contains one or more GeoJSON files (with a .geojson extension) for each of the outputs created by the service.</para>
            /// <para>GeoJSON 文件 - 输出要素将作为包含输出的 GeoJSON 表示的压缩文件返回。指定此选项后，输出为单个文件（扩展名为 .zip），其中包含一个或多个 GeoJSON 文件（扩展名为 .geojson），用于服务创建的每个输出。</para>
            /// </summary>
            [Description("GeoJSON File")]
            [GPEnumValue("GeoJSON File")]
            _GeoJSON_File,

        }

        /// <summary>
        /// <para>Ignore Invalid Order Locations</para>
        /// <para><xdoc>
        ///   <para>Specifies whether invalid orders will be ignored when solving the vehicle routing problem.</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>Checked (True)—The solve operation will ignore any invalid orders and return a solution, as long as it didn't encounter any other errors. If you need to generate routes and deliver them to drivers immediately, you may be able to ignore invalid orders, solve, and distribute the routes to your drivers. Then resolve any invalid orders from the last solve and include them in the VRP analysis for the next workday or work shift.</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>Unchecked (False)—The solve operation will fail when any invalid orders are encountered. An invalid order is an order that the VRP solver can't reach. An order may be unreachable for a variety of reasons, including when the order is located on a prohibited network element, isn't on the network at all, or is on a disconnected part of the network.</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定在求解车辆配送路线问题时是否忽略无效订单。</para>
        ///   <bulletList>
        ///     <bullet_item>
        ///       <para>选中 （True） - 只要未遇到任何其他错误，求解操作将忽略任何无效订单并返回解决方案。如果您需要生成路线并立即将其交付给司机，您可以忽略无效订单、解决路线并将其分发给司机。然后解决上次求解中的任何无效订单，并将其包含在下一个工作日或工作班次的 VRP 分析中。</para>
        ///     </bullet_item><para/>
        ///     <bullet_item>
        ///       <para>未选中 （False） - 当遇到任何无效订单时，求解操作将失败。无效顺序是 VRP 求解器无法达到的顺序。订单可能由于各种原因而无法访问，包括当订单位于被禁止的网络元素上、根本不在网络上或位于网络断开连接的部分时。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Ignore Invalid Order Locations")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _ignore_invalid_order_locations { get; set; } = null;


        /// <summary>
        /// <para>Output Unassigned Stops</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Unassigned Stops")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_unassigned_stops { get; set; }


        /// <summary>
        /// <para>Output Stops</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Stops")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_stops { get; set; }


        /// <summary>
        /// <para>Output Routes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Routes")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_routes { get; set; }


        /// <summary>
        /// <para>Output Directions</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Directions")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_directions { get; set; }


        /// <summary>
        /// <para>Solve Succeeded</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Solve Succeeded")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _solve_succeeded { get; set; }


        /// <summary>
        /// <para>Output Network Analysis Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network Analysis Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_analysis_layer { get; set; }


        /// <summary>
        /// <para>Output Route Data</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Route Data")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_route_data { get; set; }


        /// <summary>
        /// <para>Output Result File</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Result File")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_result_file { get; set; }


        /// <summary>
        /// <para>Output Network Analysis Layer Package</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network Analysis Layer Package")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_network_analysis_layer_package { get; set; }


        public SolveVehicleRoutingProblem SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}